我在redux中有这个reducer:
let index = state.items.findIndex(item => item.get('_id') == action.id);
let list = state.items.setIn([index, "selected"], action.selected)
return {
...state,
items: list
}
在这种情况下,当我看到redux更改时,我看到整个列表已更改,然后我的所有视图都是reders而不是特定项。
我做错了什么?
更新: 我更改为updateIn,现在我的状态显示只更新了一个元素,但我的整个应用程序仍然是渲染而不是特定元素:
<Row style={styles.row} key={item.get('_id')} item={item} selected={item.get('selected')}
onSelect={this.props.onRowSelect}/>
答案 0 :(得分:0)
看起来你没有使用减速剂成分。我强烈建议,因为它使每个reducer更容易理解:http://redux.js.org/docs/api/combineReducers.html
如果没有看到你的组件如何映射到状态,很难分辨出这里发生了什么,但我相信你问题的根源在于你从reducer返回的东西将永远是一个新对象。
state
与新列表合并。我怀疑您需要更改selector
或mapStateToProps
功能以阻止其获取items
,因为它始终会更改,因此始终会导致重新呈现。