Container Component未更新操作

时间:2017-09-07 01:29:01

标签: redux

我有以下减速器:

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代码中看到。

1 个答案:

答案 0 :(得分:0)

它的发生是因为你过滤了旧的状态。 您必须复制您的实体:

void deleteByIdIn(List<String> ids);

复制一块ctate,如果它是数组,然后处理它。