Réagir: en Passant des Accessoires pour les Descendants
Est-il un modèle recommandé pour le passage des accessoires descendant composants Réagir?
Ci-dessous, je suis de passage le prop callback
à un composant enfant:
Master = React.createClass({
render: function() {
return (
<div>
<ListComp items={this.props.items} callback={this.handleClick} />
</div>
);
}
});
ListComp = React.createClass({
render: function() {
this.props.items.forEach(function(item) {
items.push(<ItemView item={item} callback={this.props.callback} />);
}, this);
return (
<ul>{items}</ul>
);
}
});
Et puis le callback
prop obtient transmis aux descendants composant:
ItemComp = React.createClass({
render: function() {
return (
<li><a onClick={this.handleClick} href="#">Link</a></li>
);
},
handleClick: function(e) {
e.preventDefault();
this.props.callback();
}
});
Est-il correct de passer l'hélice vers le bas deux fois comme ça ou dois-je faire référence à son héritage en quelque sorte?
Je vois un transferPropsTo
méthode dans les docs, et de l'abattage d'arbres on dirait que j'ai pu obtenir pour callback
de l'descendant via this.props.__owner__.props
mais ces double-double souligne me font penser que je ne devrais pas.
- Je ne vois pas de problèmes en passant le rappel à deux reprises. Elle nécessite un peu plus de frappe mais c'est explicite et facile à comprendre.
Vous devez vous connecter pour publier un commentaire.
Oui, c'est idiomatiques. Pensez à chaque composante comme une fonction dont les arguments sont les accessoires – avec ce point de vue, en passant autour des accessoires explicitement semble beaucoup plus normal. Nous avons trouvé que cela rend les choses plus facile à gérer pour tout être explicite afin que vous puissiez voir ce que toutes les entrées d'un composant sont et exactement ce que vous êtes de passage.
(Une version future de Réagir inclura probablement une fonctionnalité appelée "contextes" qui permet de faire passer les choses de façon implicite, mais il sera sans doute de rendre le code plus difficile à comprendre alors je serais encore en faveur de l'explicité presque tout le temps.)
Mise à JOUR (ce n'est pas l'auteur original)
La documentation a enfin été ajouté (il a été ajouté quelque temps entre l'été 2015 et l'été 2016, probablement avec la version 0.14):
Officiel Réagir Contexte De La Documentation.
Noter que c'est également la façon dont
réagissent-redux
simplifie le passage de magasins à travers la hiérarchie.