如何将redux状态返回到初始状态?

ngynwnxp  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(160)

我很难弄清楚这一点,本质上我试图将状态设置为初始状态,到目前为止我尝试了:

// -- Initial state ------------------------------------------------------------
const INITIAL_STATE = {
  search: {
    listings: []
  },
  listings: []
}

// -- Story structure for story editor -----------------------------------------
export default function(state = INITIAL_STATE, action) {
  switch(action.type) {
    case ACTIONS.RESET_STATE:
      return { ...state, INITIAL_STATE }
    default:
      return state;
  }
}

这只是将初始状态添加到现有状态中

case ACTIONS.RESET_STATE:
      return { ...state, state = INITIAL_STATE }

返回错误

case ACTIONS.RESET_STATE:
      return { ...state, state: INITIAL_STATE }

这是将初始状态添加到现有的一个增益

case ACTIONS.RESET_STATE:
      return { ...state, search: { listings:[] }, listings: [] }

这是可行的,但我开始得到奇怪的突变错误。

slwdgvem

slwdgvem1#

Anders提出的解决方案是正确的,但存在不可变的潜在问题。这将始终生成新对象。

case ACTIONS.RESET_STATE:
    return { ...INITIAL_STATE };
5lhxktic

5lhxktic2#

看看Jiri Fornous解决方案,因为这会改变您的数据。

更简单的方法是返回INITIAL_STATE。

case ACTIONS.RESET_STATE:
      return INITIAL_STATE;
dluptydi

dluptydi3#

如果你只是想完全重置状态,只需返回INITIAL_STATEvalue 即可:

export default function(state = INITIAL_STATE, action) {
  switch(action.type) {
    case ACTIONS.RESET_STATE:
      return {
                 search: {
                     listings: []
                 },
                 listings: []
             };
    default:
      return state;
  }
}

如果你想把INITIAL_STATE放在一个地方。将初始状态创建器更改为函数:

function get_INITIAL_STATE => {
  return { search: {
               listings: []
           },
           listings: []
         }
}

export default function(state = get_INITIAL_STATE(), action) {
  switch(action.type) {
    case ACTIONS.RESET_STATE:
      return get_INITIAL_STATE();
    default:
      return state;
  }
}

相关问题