每次父级重新渲染时都会调用React渲染方法

时间:2015-09-08 16:35:34

标签: reactjs

我有一个反应组件,我注意到每次所有者组件呈现时都会被重新呈现,即使传递的道具没有改变。

这是正常行为吗?我认为一个组件只有在所有者发送新道具时才会重新渲染,即道具被更改后具有不同的值或某些内部状态变化。

假设上述情况属实,是否有任何技巧可以调试正在改变的内容以使组件重新渲染?

1 个答案:

答案 0 :(得分:4)

React的重点是在实际DOM之上使用Virtual DOM。 React Component中的render()方法用于计算新VD,将其与之前的比较,并将diff应用于AD。并且例如之间存在差异。 React.DOM.div和另一个组件的render()方法中的组件 - React需要计算组件的VD - 显然,由于它的render()方法 - 即使没有传递道具

但是,如果它使用render()挂钩调用它的shouldComponentUpdate()方法,你可以明确告诉React Component。在React.createClass()表示法中,您可以使用PureRenderMixin,除了下一次代码注入之外什么都不是:

import shallowEqual from 'react/lib/shallowEqual';

shouldComponentUpdate(nextProps, nextState) {
    return !shallowEqual(nextProps, this.props) || !shallowEqual(nextState, this.state);
}

在ES6表示法中有一些方法可以做到这一点 - 例如继承自PureRenderComponent,包含上述钩子。

另见https://facebook.github.io/react/docs/advanced-performance.html

相关问题