2017-08-19 2 views
5

J'ai une application React/Mobx. Lorsque j'effectue des modifications dans le magasin, le composant est en cours de mise à jour (re-rendu), mais je dois faire quelques comparaisons pour ajouter plus de fonctionnalités, donc je veux utiliser componentWillReceiveProps (nextProps) et comparer nextProps avec this.props. D'une certaine manière, il n'est pas appelé. Une idée, ce que je fais de mal, ou quoi d'autre je peux faire, pour l'obtenir?React/Mobx - le composant est rendu, mais componentWillReceiveProps() n'est pas appelé

+0

collez votre code ici, s'il vous plaît –

+0

Regardez ceci: https://github.com/mobxjs/mobx-react/issues/281 – robertklep

+2

Et plus précisément sur l'explication de ** urugator **. https://github.com/mobxjs/mobx-react/issues/281#issuecomment-309410018 – felixmosh

Répondre

1

tl; dr: utiliser componentWillUpdate et componentDidUpdate


L'objet magasin passé comme un accessoire ne change jamais, même lorsque ses changements de contenu. L'astuce de l'utilisation de @observable est qu'il déclenchera la mise à jour dans le composant sans changer les accessoires. Par conséquent, l'utilisation de fonctions de cycle de vie telles que shouldComponentUpdate, componentWillReceiveProps et componentDidReceiveProps ne fonctionnera pas car elles sont déclenchées lorsque les accessoires ou l'état du composant sont modifiés. Le doc de mobx l'explique bien dans la section shouldComponentUpdate. Donc, pour attraper une mise à jour dans un observable, nous devons aller un peu plus loin dans la pile du cycle de vie et utiliser componentWillUpdate et componentDidUpdate.