De passage/l'Accès des accessoires enfant apatride composant
Je sais que vous pouvez passer tous une réagir composants accessoires pour c'est enfant composant comme ceci:
const ParentComponent = () => (
<div>
<h1>Parent Component</h1>
<ChildComponent {...this.props} />
</div>
)
Mais comment voulez-vous ensuite de récupérer ces accessoires si le composant enfant est apatride? Je sais si c'est une classe de composant, vous pouvez simplement y avoir accès comme this.prop.whatever
, mais que voulez-vous passer comme argument dans les apatrides composant?
const ChildComponent = ({ *what goes here?* }) => (
<div>
<h1>Child Component</h1>
</div>
)
- Travaillez-vous avec une composante fonctionnelle ou composant de classe?
- Oui - mon installation est comme je l'ai indiqué dans le post original
Vous devez vous connecter pour publier un commentaire.
Lorsque vous écrivez
De tous les accessoires que vous êtes de passage à la
childComponent
vous êtes juste de déstructuration pour obtenir seulementsomeProp
. Si le nombre d'accessoires que vous souhaitez utiliser dans ChildComponents sont dénombrables(quelques) parmi le nombre total d'accessoires qui sont disponibles, déstructuration est une bonne option, car il offre une meilleure lisibilité.Supposons que vous souhaitez accéder à tous les accessoires dans le composant enfant, alors vous ne devez pas utiliser
{}
autour de l'argument et vous pouvez l'utiliser commeprops.someProp
Vous êtes à la recherche pour l'ES6 argument nommé syntaxe (qui n'est qu'déstructuration) ?
En option, il existe un deuxième argument à votre fonction en fonction de si vous avez spécifié un contexte pour votre composant ou pas.
Il serait peut-être plus utile wityh un des liens de la docs. Comme indiqué dans le premier article sur composants fonctionnels. Quels que soient les accessoires transmis au composant est représenté par un objet passé en premier argument de votre composante fonctionnelle.
Aller un peu plus loin, à propos de la propagation de la note dans les jsx.
Lorsque vous écrivez dans un composant :
Ce que votre composant est un objet ordinaire qui ressemble à ceci :
(Notez que ce n'est pas une Carte, mais un objet avec uniquement les chaînes que les clés).
Ainsi, lorsque vous êtes à l'aide de la propagation syntaxe, un objet JS il s'agit d'un raccourci vers cette
Est équivalent à
Et effectivement compile de
Et vous pouvez bien sûr la deuxième syntaxe, mais être prudent de l'ordre. Le plus spécifique de la syntaxe (prop=valeur) doit être le dernier : le plus spécifique de l'instruction vient en dernier.
Si vous n' :
Il compile à
Si vous faites ce que vous devriez probablement)
Il compile à
Où s'étend est *de l'Objet.attribuer (ou un polyfill si pas présent).
Pour aller plus loin, je voudrais vraiment vous recommandons de prendre le temps d'observer la sortie de Babel avec leur éditeur en ligne. C'est très intéressant de comprendre comment jsx œuvres, et plus généralement la façon dont vous pouvez mettre en œuvre es6 syntaxe avec ES5 outils.
{...this.props}
de la syntaxe. Je ne sais pas comment accéder à ces dans le composant enfant.J'ai pensé que je voudrais ajouter une simple ES2015, déstructuration de la syntaxe que j'utilise pour passer tous les accessoires fonctionnels parent à un enfant composant.
Ou si j'ai plusieurs objets (accessoires de parents, plus rien d'autre), je veux transmis à l'enfant que les accessoires:
Cette déstructuration de la syntaxe est similaire pour les réponses ci-dessus, mais c'est la façon dont je passe les accessoires de composants fonctionnels, et je pense que c'est vraiment très propre. J'espère que cela aide!
C'est une excellente tactique pour le code réduction de ballonnements. Voici un exemple avec une
ParentClass.js
:Si je le fais,
<ParentClass getCallBackFunc={() => this.getCallBackFunc()} />
, ou si je ne<ParentClass date={todaysdatevar} />
, les accessoiresgetCallBackFunc
oudate
sera disponible à laSomeComponent
classe.Source: https://zhenyong.github.io/react/docs/transferring-props.html
ChildComponent
contient le nom et leprops
sera l'argument de la flèche en fonction de la syntaxe tout comme vous avez besoin de:Si vous Babel-il créer quelque chose comme ceci:
Pour une raison quelconque, ce qui semble fonctionner pour moi est une variation sur Shubham la réponse ci-dessus:
À l'aide de cette