2017-08-19 141 views
5

我有React/Mobx应用程序。当我在商店中进行更改时,组件正在更新(重新渲染),但我需要进行一些比较以添加更多功能,所以我想使用componentWillReceiveProps(nextProps)并将nextProps与this.props进行比较。不知何故,它不被称为。任何想法,我做错了什么,或者我可以做什么,为了得到它?React/Mobx - 组件重新渲染,但未调用componentWillReceiveProps()

+0

将你的代码粘贴到这里,请 –

+0

看看这个:https://github.com/mobxjs/mobx-react/issues/281 – robertklep

+2

具体就** urugator **解释。 https://github.com/mobxjs/mobx-react/issues/281#issuecomment-309410018 – felixmosh

回答

1

TL;博士:使用componentWillUpdatecomponentDidUpdate


对象存储通过为道具不会改变,即使其含量的变化。使用@observable的技巧是它会在不更改道具的情况下触发组件中的更新。因此,使用诸如shouldComponentUpdate,componentWillReceiveProps和componentDidReceiveProps之类的生命周期函数将无法使用,因为当组件的道具或状态发生更改时会触发它们。 mobx文档在shouldComponentUpdate部分对此进行了很好的解释。

因此,为了捕获可观察的更新,我们必须深入生命周期堆栈并使用componentWillUpdatecomponentDidUpdate

相关问题