-2
votes

Rendu conditionnel du composant

J'essaie de rendre un composant uniquement si Asset.Id === Collection.MasterSetideD . Si tel est le cas, une icône STAR devrait apparaître. J'utilise la fonction gettersterid pour vérifier cette condition. Toute personne qui sait ce que l'erreur est ici?


erreur: xxx


app.js < Pré> xxx


5 commentaires

Essayez d'utiliser l'opérateur ternaire x? Y: z au lieu d'une instruction IF, ou du conditionnel et de l'opérateur &&


Avez-vous effectué la recherche: "Rendu conditionnel réagissant"? Premier résultat: réactjs.org/docs/conditionnement-rending.html


Ok excellent maintenant, je reçois cela: TypeError: Impossible de lire la propriété 'MasterAssète »de non définie. Une idée pourquoi?


@CHARLESBXL bien cela signifie élément est indéfini. Ce qui signifie qu'il y a un "problème" avec votre collectionsR . Avez-vous des éléments dedans?


Si vous obtenez une solution de la réponse, veuillez envisager de le marquer correctement


4 Réponses :


3
votes

Syntaxe que vous utilisez est faux, changez-le à

 { asset.id === this.getMasterId(asset.id) && <FaStar /> }


1 commentaires

Ok excellent maintenant, je reçois cela: TypeError: Impossible de lire la propriété 'MasterAssète »de non définie. Une idée pourquoi?



0
votes

Vous ne pouvez pas utiliser de relevés dans le code en ligne dans la déclaration de retour. Vous ne pouvez utiliser que des expressions.

une instruction IF est une déclaration, vous devez donc la remplacer par une expression telle que l'opérateur ternaire x? y: z code> ou conditionnel et opérateur && code>: p> xxx pré>

ou: p> xxx pré> React a de superbes documents sur Rendu conditionnel . P>

Soyez prudent lorsque vous utilisez le conditionnel et && code>, comme si le premier argument est le numéro 0 code> (par exemple, list.length && code >) Ensuite, vous finirez par rendu un 0 code> au lieu de rien. P>

Dans ces cas, il est préférable de se lancer dans un booléen: P>

!!list.length && <Component />


2 commentaires

ok excellent maintenant je reçois cela: TypeError: impossible de lire la propriété 'MasterAssetid' de non définie


this.state.collectionsR.Find (element => élément.masterassetid === ASSETNR) .masterassetided . array.find retournera non défini si rien ne correspond à la condition. Assurez-vous de vérifier que l'objet existe avant d'essayer d'accéder à une propriété.



0
votes

Voir si cela fonctionne

p>

(asset.id === this.getMasterId(asset.id)) ? <FaStar /> : <></>;


1 commentaires

Ok excellent maintenant, je reçois cela: TypeError: Impossible de lire la propriété 'MasterAssète »de non définie. Une idée pourquoi?



0
votes

Dans le code de retour de la fonction de rendu, vous ne pouvez utiliser que des expressions (des choses autorisées sur le côté droit d'un équivalent). si est une déclaration, il n'est donc pas permis. Exemple que ne fonctionne pas travail: xxx

Cependant, une expression ternaire est autorisée. Cela ressemblerait alors à ceci: xxx


1 commentaires

Ok excellent maintenant, je reçois cela: TypeError: Impossible de lire la propriété 'MasterAssète »de non définie. Une idée pourquoi?