2017-04-02 25 views
0

我有一个控制器,它呈现一个表和动作按钮。 该表具有行孩子,复选框。这是我的渲染功能:React退回特定组件

render() { 
     <div> 
      <Table items={this.props.items}></Table> 
      <Actions selectedItems={_.filter(this.props.items, i => i.selected)} 
     </div> 
} 

通过检查每一行,我用'selected'属性更新列表中的项目。 但现在,如果我想改变选定的指示,我必须重新渲染所有容器,包括表格。 如何在不渲染整个表的情况下做到这一点? (仅呈现FloatingActions)

这是我的终极版映射:

感谢。

+0

您似乎已经留下了一些您的问题的细节。您应该查看['shouldComponentUpdate'生命周期方法](https://facebook.github.io/react/docs/react-component.html#shouldcomponentupdate),以查看是否可以在重新渲染时缩短重新渲染时间它不适用于“表格”项目(例如,如果选择的道具没有改变)。 –

+0

是否有选择地重新渲染组件的唯一方法?我是否必须以编程方式检查属性更改? – user3712353

回答

-1

您应该使用反应key属性并为每行提供唯一键。
在这种情况下,React调用Table的render方法,但只重新渲染DOM中更改的行。看看here

+0

我有一个关键属性。问题是我只需要重新渲染组件的一部分。最好的方法是使用shouldcomponentupdate? – user3712353

-1

你应该学会在React中思考。没关系,每个组件都会调用render()函数

您的组件实际上只会在reRender开始看起来不一样时才起作用。

如果你whant是否需要改变某些事情手动决定,也可以使用 componentWillReceiveProps(newProps) ,并检查是否有新的道具不同

它是从像shouldComponentUpdate

,但更好的生活,圆法考虑在你的商店中包含你的视图状态。