如何在Redux存储中将状态重置为其初始状态?

时间:2019-01-31 07:32:51

标签: reactjs redux react-redux

在redux存储区中,我将初始状态设置为某个值,如下所示:

const search_initial_state = {
FilterItem:18
}

我正在另一个函数中手动更改此状态值 但是,单击重置按钮后,我想将“ FilterItem”状态设置为其初始值。(即18)

2 个答案:

答案 0 :(得分:4)

如果我对您的理解是正确的,则只想将一个值重置为其原始/初始值。

定义一个动作创建者,该动作创建者将调度RESET_FILTER_ITEM动作类型,然后在您想重置过滤器项时就调度该动作。

const resetFilterItem = () {
    return {
      type: "RESET_FILTER_ITEM"
    }
}

实现复位情况后,减速器将如下所示

const myReducer = (state = initialState, action) => {
   switch(action.type){
      case "OTHER_CASE":
        return {...state}
      case "RESET_FILTER_ITEM":
        return {
           ...state,
           FilterItem: initialState.FilterItem
        }
      default:
        return state  
   }
}

希望这会对您有所帮助。

答案 1 :(得分:2)

在调度了要处理的动作后,减速器将更新其状态。因此,同样,您必须调度一个操作,告诉您的减速器返回初始状态。

//Reducer code
const initialState = {}

const myReducer = (state = initialState, action) => {
   switch(action.type){
      case "FILTER_ITEM":
        return {...someUpdatedState}
      case "RESET_ITEM":
        return initialState
      default:
        return state
  }
}

减速器将根据操作类型返回新状态。

因此,只需定义一个动作创建者,该动作创建者将分派动作类型RESET_ITEM或您可能要调用的其他动作。然后在要重置时使用它。

const resetItem = () => {
   return {
      type: "RESET_ITEM"
   }
}