我有表部件,這使得行的項目列表:陣營Redux的元件不更新
return <Row style={styles.row} key={idx} item={item} onSelect={this.props.onRowSelect}>
{columns.map((col, idx) => {
return <Column style={col.style} key={`${item._id}_${col.key}`}
width={col.width || this._defaultCellWidth} type={col.type}>
{_.get(item, col.key)}
</Column>
})}
</Row>
每個項目都有selected:bool
值,它被綁定到每一行的複選框。
此外,我有一個HeaderRow,其中有選擇全部複選框。 通過選中複選框,我派遣一個事件來更新所選字段。 狀態本身已更新,但沒有重置。 我的動作是:
if(action.id)
{
let index = state.items.findIndex(item => item._id == action.id);
state.items[index].selected = action.selected;
}
else
{
state.items.map(e=>e.selected = action.selected);
}
return
{
...state,
items: state.items
}
編輯: 那是很好的解決方案:
if(action.id) {
let index = state.items.findIndex(item => item._id == action.id);
state.items[index].selected = action.selected;
return {
...state
}
}else{
return {
...state,
items: state.items.map((item, index) => {
return Object.assign({}, item, {
selected: action.selected
})
})
}
}
所以,我怎麼可以在陣列中只設定一個項目,並告訴發生反應,它的更新? – user3712353