Javascript Redux-重置子树的状态
重置redux存储的子树的正确方法是什么?我对重置整个redux存储不感兴趣,只对它的reducer子树部分感兴趣 下面是一个示例片段:Javascript Redux-重置子树的状态,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,重置redux存储的子树的正确方法是什么?我对重置整个redux存储不感兴趣,只对它的reducer子树部分感兴趣 下面是一个示例片段: //initial state const initialState = { isFetching: false, error: '', page: 0 } //reducer for suggestions store export default function suggestions (state = initialState
//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操作时,我的一些组件中突然出现未定义的道具,并出现以下错误:
warning.js:36警告:PerformUpdate如果需要:意外的批号(当前161,待定157)
我不是100%确信我做得对。是否有人可以确认问题是否与我的reducer有关,或者在我的组件生命周期方法中的某个地方
谢谢 您创建的对象将如下所示:
{
initialState: {
isFetching: false,
error: '',
page: 0
}
}
你想要的是:
case CLEAR_SUGGESTIONS : {
return {
...initialState
}
}
您创建的对象将如下所示:
{
initialState: {
isFetching: false,
error: '',
page: 0
}
}
你想要的是:
case CLEAR_SUGGESTIONS : {
return {
...initialState
}
}
您意外地将initialState嵌套在名为“initialState”的键下。你只需要:
case CLEAR_SUGGESTIONS : {
return initialState
}
无需复制initialState,因为存储状态是不可变的。您无意中将initialState嵌套在名为“initialState”的键下。你只需要:
case CLEAR_SUGGESTIONS : {
return initialState
}
不需要复制initialState,因为存储状态是不可变的。结果是相同的。如果这是处理重置子树状态的正确方法,那么我的组件可能还有其他问题。。。谢谢,结果是一样的。如果这是处理重置子树状态的正确方法,那么我的组件可能还有其他问题。。。谢谢,我明白了,你是对的。我以前也测试过这个。我开始相信当这个redux状态子树被重置时,我的组件没有正确更新是有问题的。谢谢,我明白了,你是对的。我以前也测试过这个。我开始相信当这个redux状态子树被重置时,我的组件没有正确更新是有问题的。谢谢