Après avoir commencé à travailler avec React.js, il semble qu'ils props
soient destinés à être statiques (transmis depuis le composant parent), tandis que les state
changements sont basés sur les événements. Cependant, j'ai remarqué dans les documents une référence à componentWillReceiveProps
, qui inclut spécifiquement cet exemple:
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
Cela semble impliquer que les propriétés PEUVENT changer sur un composant basé sur la comparaison de nextProps
à this.props
. Qu'est-ce que je rate? Comment les accessoires changent-ils ou me trompe-t-on sur la façon dont cela s'appelle?
la source
componentWillReceiveProps
est dépassé maintenant: et remplacé par une combinaison degetDerivedStateFromProps
etcomponentDidUpdate
.PROPS
ETAT
Un bon exemple est déjà fourni par Valéry.
la source
Les accessoires peuvent changer lorsque le parent d'un composant rend à nouveau le composant avec des propriétés différentes. Je pense que c'est surtout une optimisation afin qu'aucun nouveau composant ne doive être instancié.
la source
Astuce pour mettre à jour les accessoires s'ils sont des tableaux:
la source
Beaucoup de choses ont changé avec les hooks, par exemple
componentWillReceiveProps
transformés enuseEffect
+useRef
( comme indiqué dans cette autre réponse SO ), mais les accessoires sont toujours en lecture seule , donc seule la méthode de l'appelant doit la mettre à jour.la source
si vous utilisez
recompose
, utilisezmapProps
pour créer de nouveaux accessoires dérivés des accessoires entrantsModifiez par exemple:
la source