React / Mobx - 组件正在重新渲染,但未调用componentWillReceiveProps()

时间:2017-08-19 20:13:12

标签: javascript reactjs typescript mobx mobx-react

我有React / Mobx应用程序。当我在商店中进行更改时,组件正在更新(重新呈现),但我需要进行一些比较以添加更多功能,因此我想使用componentWillReceiveProps(nextProps)并将nextProps与this.props进行比较。不知怎的,它没有被召唤。为了得到它,任何想法,我做错了什么,或者我还能做些什么?

1 个答案:

答案 0 :(得分:3)

tl; dr:使用Name: Record of student_123456 Student id: 123456 Grades: Math : 2 Basic Math : 4 Advanced Math : 5 Math 1 : 3 Name: Record of student_34567 Student id: 34567 Grades: Math : 1 Catalan : 5 Basic Math : 9 Enter a lecture: Math StudentId: 123456 grades: 2 StudentId: 34567 grades: 1 Enter a lecture: Catalan StudentId: 34567 grades: 5 componentWillUpdate

作为道具传递的对象商店永远不会改变,即使其内容发生变化。使用@observable的技巧是它将触发组件中的更新而不更改道具。因此,使用诸如shouldComponentUpdate,componentWillReceiveProps和componentDidReceiveProps等生命周期函数不会起作用,因为当组件的支持或状态发生变化时它们会被触发。 mobx doc在shouldComponentUpdate部分很好地解释了它。

因此,要捕获observable中的更新,我们必须在生命周期堆栈中更深入一些并使用componentDidUpdatecomponentWillUpdate