我不确定如何在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
后,我找到windowTwo
和windowThree
。我也不确定为什么我必须在这些行中指定windowOne
const { windowOne } = state.windowOne;
const { windowOne } = state
不应该足够吗?那可能是相关的......
答案 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
。