Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux-重置子树的状态_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript Redux-重置子树的状态

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

重置redux存储的子树的正确方法是什么?我对重置整个redux存储不感兴趣,只对它的reducer子树部分感兴趣

下面是一个示例片段:

//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状态子树被重置时,我的组件没有正确更新是有问题的。谢谢