我有以下减速器:
const selectEntityReducer = function(entityState, action) {
const selectedEntity = entityState.allEntities.filter(e => (e.id == action.id))[0]
const newStateForSelectEntity = updateObject(entityState, {selectedEntity: selectedEntity});
return newStateForSelectEntity;
};
entityState
形状看起来像{entities:[{id:1}, {id:2}], selectedEntity:{id:2}}
。
我有一个连接到商店的React组件,如下所示:
function mapStateToProps(state) {
return {
selectEntity: state.entities.selectEntity
};
}
然而,它永远不会重新呈现。
如果我在selectEntities: state.entities
中说mapStateToProps
,则该组件会重新呈现。但我只对这个组件的选定实体感兴趣。
我知道为了使redux正常运行,需要在整个状态树中强制执行不变性。但我认为这就是我在selectEntityReducer
中所做的。
任何额外的上下文都可以在this gist中的完整redux代码中看到。
答案 0 :(得分:0)
它的发生是因为你过滤了旧的状态。 您必须复制您的实体:
void deleteByIdIn(List<String> ids);
复制一块ctate,如果它是数组,然后处理它。