2017-04-02 28 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

,但更好的生活,圓法考慮在你的商店中包含你的視圖狀態。