我有React / Mobx应用程序。当我在商店中进行更改时,组件正在更新(重新呈现),但我需要进行一些比较以添加更多功能,因此我想使用componentWillReceiveProps(nextProps)并将nextProps与this.props进行比较。不知怎的,它没有被召唤。为了得到它,任何想法,我做错了什么,或者我还能做些什么?
答案 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中的更新,我们必须在生命周期堆栈中更深入一些并使用componentDidUpdate
和componentWillUpdate
。