我将jQuery Flotchart组件打包为React,我需要在组件属性发生变化时调用图表实例的plot
方法。
我最终得到的是shouldComponentUpdate
钩子实现,它将新道具与旧道具进行比较。
然而,作为对帐过程的一部分,React本身将新组件道具与旧组件道具进行比较的React documentation says,因此React已经应该获得有关某些道具是否已更改的信息。这意味着如果我在shouldComponentUpdate
中对道具进行浅层比较,我会复制已在React中构建的功能,是吗?如果是这样,我如何获取有关属性是否从React更改的信息,而无需在shouldComponentUpdate
中复制它?
答案 0 :(得分:0)
您正在寻找的功能是componentWillReceiveProps
。根据reactjs documentation,此方法将接收下一组组件属性nextProps
。
您可以比较
等属性if (nextProps,myProperty == this.props.myProperty) {//doSomething}
答案 1 :(得分:0)
React没有对props进行任何浅层比较,它提供了组件生命周期钩子,可以根据状态或自定义逻辑在 shouldComponentUpdate 中添加逻辑。但是,如果您的组件是 pureComponent ,则基于道具或状态对您进行浅层比较。
每当在调用render函数之前,props / state更改都会调用hook方法。
componentWillReceiveProps()---> shouldComponentUpdate()---> componentWillUpdate()---> render()---> componentDidUpdate()