化简器不带来初始状态



我正在使用一个reducer来管理应用程序上的各种状态。但每次我在初始状态中添加一个新密钥时,就像这样:

const initialState = {
  loading: false,
  archiveTypes: [],
  archiveType: {
    id: null,
    name: '',
    local: '',
    description: '',
  }
}

initialState从不显示新信息,直到我向reducer发送一些信息。

有没有办法让它从所有信息开始?

我的完整代码:

import * as actionTypes from 'actions';
import produce from 'immer';
const initialState = {
  loading: false,
  archiveTypes: [],
  archiveType: {
    id: null,
    name: '',
    local: '',
    description: '',
  }
}
const archiveTypeReducer = produce((draft, action) => {
  switch (action.type) {
    case actionTypes.ARCHIVE_TYPE_GET_ALL_SUCCESS: {
      draft.loading = false;
      try {
        draft.archiveTypes = action.payload
      } catch (err) {
        console.log(`REDUCER ERROR ${err}`)
      }
      return draft;
    }
    case actionTypes.ARCHIVE_TYPE_GET_BY_ID_SUCCESS: {
      draft.loading = false;
      try {
        draft.archiveType = action.payload
      } catch (err) {
        console.log(`REDUCER ERROR ${err}`)
      }
      return draft;
    }
    case actionTypes.ARCHIVE_TYPE_REQUEST_FAILURE: {
      draft = initialState
      return draft
    }
    default: {
      return draft;
    }
  }
}, initialState);
export default archiveTypeReducer;

在Redux应用程序中,您的初始状态正是:您的初始状态。如果你想在页面加载后更改你的状态,你必须调度一个操作来完成

如果你想要一种完全重置状态的方法,那么你需要创建一个RESET_ALL_STATE操作(或者在你的情况下,你的actionTypes.ARCHIVE_TYPE_REQUEST_FAILURE似乎恢复了初始状态(。但实际上,这很不正常;通常情况下,您只想使用ADD_SPECIFIC_DATA操作。

例如,您可以在component live circle的方法中调用action,比如componentDidMount。或者反作用钩子,useEffecthttps://reactjs.org/docs/react-component.html#componentdidmount

还有一件事,您忘记了将initiasState设置为默认状态(草稿(。product((draft=initialState,action(。

相关内容

  • 没有找到相关文章

最新更新