Redux 状态数组不会重新启动到其初始值

问题描述 投票:0回答:2

我正在为我的 React Native 应用程序使用 redux。我想在用户执行某些操作后重新启动我的 redux 状态。

这是我的初始状态

    initialState = {
            a: "",
            b: "",
            arrayC: [
             {
                x : "xValue",
                y : "",
                z : ""
             }
           ]
    }

在进行一些用户操作后,状态将其值更改为如下所示

        {
                a: "ValueA",
                b: "ValueB",
                arrayC: [
                 {
                    x : "xValue",
                    y : "ValueY",
                    z : "ValueZ"
                 }
               ]
        }

我有像以前一样将当前状态重置为初始状态的操作,这是我的重置操作

export const resetStateReducer = () => ({
    type: RESET_STATE
});

在我的减速机内

case RESET_BOOKING_REDUCER:
            return initialState;

一切正常,除了

arrayC
。它仍然保留重置之前的值,就像这样

{
            a: "",
            b: "",
            arrayC: [
             {
                x : "xValue",
                y : "ValueY",
                z : "ValueZ"
             }
           ]
    }

我该怎么办?是我的代码或者逻辑有问题吗?

谢谢

编辑 这是我更新

arrayC

的操作代码
case ADD_ARRAY_C:
            var { index, newObject} = action.payload;
            var temp = state.arrayC;
            temp[index] = { ...temp[index], ...newObject};

            return {
                ...state,
                arrayC: temp,
            };
reactjs react-native redux react-redux
2个回答
2
投票

很可能你的初始状态正在发生变化。在重置状态之前尝试控制台日志并查看显示的内容。

如何正确克隆 JavaScript 对象?

查看此内容,了解如何在减速器中克隆初始状态的对象。


0
投票

我遇到了同样的问题,我发现的唯一方法是lodash

cloneDeep

case RESET_BOOKING_REDUCER:
  return {
    ...state,
    arrayC: _.cloneDeep(initialState.arrayC)
  }
© www.soinside.com 2019 - 2024. All rights reserved.