Redux - 子树的重置状态
问题描述:
重置REDX子库的子树的正确方法是什么?我对重置整个redux商店不感兴趣,但它只是reducer子树部分。Redux - 子树的重置状态
下面是一个例子片段:
//initial state
const initialState = {
isFetching: false,
error: '',
page: 0
}
//reducer for suggestions store
export default function suggestions (state = initialState, action) {
switch (action.type) {
case FETCHING_SUGGESTIONS : {
return {
...state,
isFetching: true
}
}
case FETCHING_SUGGESTIONS_SUCCESS : {
return {
...state,
[action.suggestion.suggestionId] : action.suggestion
}
}
case FETCHING_SUGGESTIONS_ERROR : {
return {
...state,
isFetching: false,
error: "Error in fetching suggestions"
}
}
case CHANGE_PAGE : {
return {
...state,
page: action.page
}
}
case ADD_SUGGESTION : {
return {
...state,
[action.suggestion.suggestionId]: action.suggestion
}
}
case CLEAR_SUGGESTIONS : {
return {
initialState
}
}
default :
return state
}
}
我认为这会工作,但每当CLEAR_SUGGESTIONS行动出动,我突然得到了一个未定义的道具在我的一些部件,并具有以下错误: 警告。 js:36警告:performUpdateIfNecessary:意外的批号(当前161,正在等待157)
我不是100%自信我正确地做到了这一点。有人可以确认问题出在我的reducer上,还是在我的组件生命周期方法的某个地方?
谢谢!
答
你是一个名为“初始化状态项下意外筑巢的初始化状态。你只是想:
case CLEAR_SUGGESTIONS : {
return initialState
}
有没有需要复制的初始化状态,因为商店的状态是不可改变的。
答
创建看起来像这样的对象:
{
initialState: {
isFetching: false,
error: '',
page: 0
}
}
你想要的是这样的:
case CLEAR_SUGGESTIONS : {
return {
...initialState
}
}
+0
结果是一样的。如果这是处理重置子树状态的正确方法,那么可能还有其他问题与我的组件有关......谢谢 –
我明白了,你是对的。我以前也测试过这个。我开始相信,当这个redux状态子树被重置时,我的组件没有正确更新有问题。谢谢 –