0
votes

Réact.js: Comment filtrer le tableau JSX Element sur l'attribut personnalisé?

Je commence par un tableau simple d'éléments JSX:

return (
  {jsxArray
    .filter(jsxElement => // want to filter in JSX elements 
      // that are true for customAttribute keyed to `item.isActive`)
  }
)


1 commentaires

"Il est possible que je filtre simplement la matrice à une étape antérieure" . C'est ce que vous devriez faire. "Cela entraînerait une duplication supplémentaire de code si" . Vous devriez probablement extraire un composant qui rend ce marquage.


3 Réponses :


4
votes

Vous ne filtrez pas la liste après votre rendu. À ce stade, il s'agit simplement d'un arbre de nœuds qui n'a plus beaucoup de sens.

à la place, vous filtrez les éléments premier em>, et puis rendu em> seuls les éléments qui réussissent Vos critères. P>

const [items, setItems] = useState([])
const filteredItems = items.filter(item => item.isActive)

return <>
  <p>Total Items: ${items.length}</p>
  <ItemList items={filteredItems} />
</>


0 commentaires

1
votes

généralement, vous filtreriez d'abord les données simples, puis rendriez le balisage des éléments filtrés comme décrit dans @Alex Wayne Réponse.

Si vous vous inquiétez de la duplication du balisage, cela peut être résolu en extrayant un composant de Il: xxx

pour rendre la liste filtrée que vous pouvez alors faire: xxx

et pour la liste non filtrée: xxx


0 commentaires

1
votes

au lieu d'accéder aux propriétés d'élément JSX (qui, je pense que c'est non possible ou très difficile), je vous suggère d'agir de cette façon:

  1. Enregistrez la fonction de rendu pour les éléments dans une fonction de flèche XXX

  2. Enregistrez la fonction de filtrage dans une fonction de flèche XXX

  3. Utilisez-les pour filtrer et mapper XXX

  4. Utilisez-les uniquement pour cartographier XXX

    J'espère que cela vous aide!


0 commentaires