反应和解 - 道具差异

时间:2016-02-20 14:46:17

标签: javascript jquery reactjs

我将jQuery Flotchart组件打包为React,我需要在组件属性发生变化时调用图表实例的plot方法。

我最终得到的是shouldComponentUpdate钩子实现,它将新道具与旧道具进行比较。

然而,作为对帐过程的一部分,React本身将新组件道具与旧组件道具进行比较的React documentation says,因此React已经应该获得有关某些道具是否已更改的信息。这意味着如果我在shouldComponentUpdate中对道具进行浅层比较,我会复制已在React中构建的功能,是吗?如果是这样,我如何获取有关属性是否从React更改的信息,而无需在shouldComponentUpdate中复制它?

2 个答案:

答案 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()