Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应+;Redux不更新存储_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 反应+;Redux不更新存储

Javascript 反应+;Redux不更新存储,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我正在使用React和Redux制作电话列表,并且出现了问题。 需要注意的是:用户将其数据以模式形式放置,当他单击Submit按钮时,onClick函数触发并将数据发送到Redux存储,然后从存储区发送到localStorage,所有数据都将存储在该存储区 问题是:不是创建一个存储中包含数据的对象的数组,而是创建了一个空数组。下一次单击Submit按钮后-第一次单击时的数据将放置,而不是空数组。如此下去 在普通状态下也有同样的问题 守则: 应用程序: 适当行动: export function

我正在使用React和Redux制作电话列表,并且出现了问题。 需要注意的是:用户将其数据以模式形式放置,当他单击Submit按钮时,onClick函数触发并将数据发送到Redux存储,然后从存储区发送到localStorage,所有数据都将存储在该存储区

问题是:不是创建一个存储中包含数据的对象的数组,而是创建了一个空数组。下一次单击Submit按钮后-第一次单击时的数据将放置,而不是空数组。如此下去

在普通状态下也有同样的问题

守则:

应用程序:

适当行动:

export function setUser(user) {
    return {
        type: "SET_USER",
        payload: user
    };
}

如果您可以在WebpackBin或其他东西上提供一个工作示例,这将有助于更好地调试问题

根据我的经验,这通常发生在状态发生变异时。您能否尝试在减速机上使用以下格式:

state = {
            state.set('users', [...state.users, action.payload])
        };
现有功能在
state=…

state = {
            ...state,
            users: [...state.users, action.payload]
        };

另外,在减速机的最后两个操作案例中,您缺少
break
语句。而您的
默认值
案例

决不能在React或Redux中直接改变状态。使用Redux时,您希望始终返回一个新对象以替换以前的状态

也许可以试试这样的

switch (action.type) {
    case 'SET_INPUT':
        return {
            ...state,
            input: action.payload
        };
    case 'SET_USER':
        return {
            ...state,
            users: [...state.users, action.payload]
        };
    case 'SET_FORM_MODAL_STATUS':
        return {
            ...state,
            formModalStatus: action.payload
        };
    case 'SET_SUCCESS_MODAL_STATUS':
        return {
            ...state,
            successModalStatus: action.payload
        };
    default:
        return state;
}

谢谢你的回答。当我尝试您的变量时,console@state.set中的-error不是一个函数。我已经尝试过许多不同的还原不可变回报,现在就像Jenna Rajani在这里写的那样。可能会尝试在Webpackbin上提供工作示例,但这需要时间。PS:我尝试只使用React-state,但使用React-setState()遇到了这个问题,然后在React+Redux中重写所有内容,问题消失。然后我不喜欢bootstrap模态,使用React模态,并面对最初的问题。
state = {
            ...state,
            users: [...state.users, action.payload]
        };
switch (action.type) {
    case 'SET_INPUT':
        return {
            ...state,
            input: action.payload
        };
    case 'SET_USER':
        return {
            ...state,
            users: [...state.users, action.payload]
        };
    case 'SET_FORM_MODAL_STATUS':
        return {
            ...state,
            formModalStatus: action.payload
        };
    case 'SET_SUCCESS_MODAL_STATUS':
        return {
            ...state,
            successModalStatus: action.payload
        };
    default:
        return state;
}