2016-02-20 41 views
0

我正在将jQuery Flotchart组件打包为React之一,每当组件属性发生更改时,我都需要调用plot方法。React reconciliation - 道具diff

我最终得到的是shouldComponentUpdate挂钩实施,它比较新的道具和旧道具。

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

回答

0

阵营没有做道具的任何浅层比较的属性,它提供组件生命周期挂钩,根据道具OT状态或您的定制逻辑里面添加shouldComponentUpdate你的逻辑。但是,如果你的组件是pureComponent根据道具或状态,你的反应会做浅层比较。

每次道具/状态改变时,在调用渲染函数之前都会调用hook方法的调用对。

componentWillReceiveProps()---> shouldComponentUpdate()---> componentWillUpdate()--->渲染()---> componentDidUpdate()

0

您正在寻找的功能是componentWillReceiveProps。根据reactjs documentation,该方法将接收下一组组件属性nextProps

您可以比较喜欢

if (nextProps,myProperty == this.props.myProperty) {//doSomething}