不确定如何正确更新Redux中的State

时间:2017-10-22 16:09:09

标签: javascript redux react-redux flux

我不确定如何在state中正确更新redux。我得到重复的条目。

这就是state的样子

const STATE = {
    windowOne: { ... }
    windwoTwo: { ... }
    windowThree: { ... }
}

那是我的减速器之一

export default function reducer(state = STATE, action) {
    switch (action.type) {
        case type.WINDOW_ONE: {
            return {
                ...state,
                windowOne: {
                    ...state.windowOne,
                    foo: action.bar,
                }
            }
        }
    }
}

我将状态映射到我的组件的道具

function mapDispatchToProps(dispatch) {
    return bindActionCreators(combinedActions, dispatch);
}

const mapStateToProps = state => {
    const { windowOne } = state.windowOne;

    return {
        windowOne,
    };
}

export default connect(mapStateToProps, mapDispatchToProps)(SomeComponent);

我在这里结合了各种减速器

export default combineReducers({
    windowOne,
    windowTwo,
    windowThree
});

当我使用redux-logger时,我会在windowOne中看到整个state被复制。在那里,在触发action后,我找到windowTwowindowThree。我也不确定为什么我必须在这些行中指定windowOne

    const { windowOne } = state.windowOne;

const { windowOne } = state不应该足够吗?那可能是相关的......

1 个答案:

答案 0 :(得分:0)

检查org.eclipse.jface.viewers.CheckboxTreeViewer combineReducers;它负责向每个reducer发送适当的状态切片并合并结果。对于显示的reducer,这意味着您应该仅将windowOne的初始状态传递给它,并返回windowOne的更新状态:

export default function reducer(state = STATE.windowOne, action) {
    switch (action.type) {
        case type.WINDOW_ONE: {
            return {
                ...state,
                foo: action.bar,
            }
        }
    }
}

在此之后,const { windowOne } = state中的mapStateToProps应该有效。另请注意,您需要在每个reducer中都有一个默认大小写,因为所有reducers都会收到所有操作,并且STATE可能更适合命名为initialState