如何在不重新渲染ReactJS中的整个树的情况下渲染树组件的叶组件

时间:2017-06-27 10:05:07

标签: javascript reactjs optimization tree renderpartial

成像有一个包含树定义的JS对象。叶子的定义如下:

{title:'leaf A'}

树JS对象看起来像:

{{title:'leaf A', children:{title:'children of leaf A'}}}

渲染树组件,我想在叶组件上触发某些事件时更改叶组件的标题。这可以通过将树组件的事件处理程序挂钩到叶组件并使用setState()重新呈现树组件来轻松完成。但是,由于此类更改不会导致树的结构更改,因此最好不要重新渲染整个树,而是重新渲染叶组件。是否有可能在reactjs中实现这一目标?结果,用于树渲染的JS对象中的叶的标题也应该被更改/替换。

1 个答案:

答案 0 :(得分:2)

您可以使用接受新道具和新状态的shouldComponentUpdate方法,然后您可以决定是否要重新渲染。

shouldComponentUpdate(nextProps, nextState) {

  // Update this component ONLY when the prop someProp changes
  if (this.props.someProp !== nextProps.someProp) {
    return true;
  }

  return false;
}

我建议从重构实用程序带检查高阶组件onlyUpdateForKeys - https://github.com/acdlite/recompose