Ответ 1
Я пошел по пути componentWillRecieveProps. Учитывая, что cloneWithRows
требуется новый объект каждый раз при его обновлении (в зависимости от того, как вы используете rowHasChanged
), нужно передать ему новый набор данных. К счастью с редукторами redux, такой тип шаблона ожидается в любом случае с точки зрения возвращаемых данных.
Вот как я сделал это в своем приложении:
componentWillReceiveProps(newProps) {
let days = newProps.days;
if (newProps.viewingDayUuid !== this.props.viewingDayUuid) {
days = days.map((day) => {
if (day.uuid === newProps.viewingDayUuid || day.uuid === this.props.viewingDayUuid) {
return Object.assign({}, day);
} else {
return day;
}
});
}
this.setState({
dataSource: this.state.dataSource.cloneWithRows(days)
});
}
В блоке if вы можете игнорировать, что я решил создать новый объект дня, если текущее выбранное (состояние выделения) навигационное устройство в списке должно измениться. Вместо того, чтобы возвращать целые новые объекты каждый раз