34

我需要将当前状态重置为初始状态。但是我所有的尝试都没有成功。我如何使用 redux-toolkit 来做到这一点?

const showOnReviewSlice = createSlice({
  name: 'showOnReview',
  initialState: {
    returned: [],
  },
  reducers: {
    reset(state) {
      //here I need to reset state of current slice
    },
  },
});

4

5 回答 5

49

像这样的东西:

const intialState = {
  returned: []
}

const showOnReviewSlice = createSlice({
    name: 'showOnReview',
    initialState,
    reducers: {
        reset: () => initialState
    }
});
于 2019-12-20T16:05:22.850 回答
11

这对我有用(2020 年中后期)。以您的代码上下文格式化为例。

const initialState = {
  returned: [],
};

const showOnReviewSlice = createSlice({
  name: 'showOnReview',
  initialState,
  reducers: {
    reset: () => initialState,
  },
});

于 2020-08-12T19:01:21.293 回答
5

就我而言,作为 2021 年中期的上一个答案,即使您使用如下工具包适配器,仅设置初始状态也不起作用:

reducers: {
        // Other reducers
         state = tasksAdapter.getInitialState({
                status: 'idle',
                error: null,
                current: null
            })
        }
    },


相反,您应该使用Object.assign(), 猜测它与内部 immer 库行为有关

于 2021-03-06T12:48:23.557 回答
5

直接替换state对我不起作用(2020 年年中)。我最终得到的工作是用. 这有效:initialStateObject.assign()

const showOnReviewSlice = createSlice({
    name: 'showOnReview',
    initialState: {
        returned: []
    },
    reducers: {
        reset(state) {
            Object.assign(state, initialState)
        }
    }
});
于 2020-07-17T16:12:05.927 回答
1

您可以使用扩展运算符initialState

const initialState: {
  returned: unknown[] //set your type here
} = {
  returned: []
}

const showOnReviewSlice = createSlice({
  name: 'showOnReview',
  initialState,
  reducers: {
    reset() {
      return {
        ...initialState
      }
    }
  }
});
于 2021-12-02T11:12:18.823 回答