reactjs - 组件未更新深度嵌套的 redux 对象

标签 reactjs redux react-redux

我的应用程序有一个项目部分,用户可以在项目内创建事件。我的 redux 状态是深层嵌套的,如下所示:

enter image description here

当用户创建事件时,我使用以下内容更新状态:

case CREATE_PROJECT_TODO:
    const data = [...state.data];
    const index = state.data.findIndex(project => project._id===action.payload.project_id);
    data[index].events = [
        ...data[index].events,
        action.payload  
    ];
    return {
        ...state,
        data
    };

但是,我的 react 组件没有更新以反射(reflect)更改。我很确定我没有改变状态。是否存在深层嵌套对象的问题,并且 react 无法检测到这些变化!任何帮助将不胜感激!

最佳答案

使用 const data = [...state.data],您正在执行 shallow copy .

使用 map 并更新您的州。您的状态已正确更新并将正确触发组件重新渲染。

case CREATE_PROJECT_TODO:
    const index = state.data.findIndex((project) => project._id === action.payload.project_id)
    const updatedData = state.data.map((item, idx) => {
    if (idx === index) {
        return {
        ...item,
        events: [...item.events, action.payload],
        }
    }
    return item
    })

关于reactjs - 组件未更新深度嵌套的 redux 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62373936/

相关文章:

javascript - 当 Object.assign() 与其他操作结合使用时,Ngrx 可观察对象不会对状态存储更改使用react

reactjs - 如何在 react-redux 应用程序中安排 Action 创建者?

reactjs - 如果未传入,useSelector 从哪里拉取状态?

javascript - 将状态属性传递给路由中的组件

javascript - 如何在 reactjs 中使用高阶组件添加按钮

reactjs - 我如何在 React 中解决 "_this is undefined"?

javascript - 每次击键时响应 API 调用 - componentwillUpdate 问题

javascript - 在 ReactJS 中,为什么 `setState` 在同步调用时表现不同?

javascript - 当变量改变时 redux 状态自动改变

javascript - 可以将 Immutable.js Map 转换为 React 组件内的对象吗