Aktualisieren einer Tabelle I Komponente haben, die Zeilen für Positionsliste rendert:Reagieren Redux Element nicht
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>
Jedes Element hat selected:bool
Wert, der auf jeder Zeile einem Ankreuzfeld binded wird.
Auch habe ich eine HeaderRow, die Kontrollkästchen für alle auswählen. Durch Aktivieren der Checkbox verschicke ich ein Ereignis, um das ausgewählte Feld zu aktualisieren. Der Status selbst wird aktualisiert, aber es gibt keinen neuen render. Meine Aktion ist:
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
}
EDIT: Ist das gute Lösung:
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
})
})
}
}
Wie kann ich also nur ein Element im Array festgelegt und es wird aktualisiert sagen reagieren? – user3712353