【问题标题】:Redux store update isn't causing rerenderRedux 商店更新不会导致重新渲染
【发布时间】:2020-12-27 22:34:28
【问题描述】:

按下按钮时,我向执行以下操作的减速器发送调度:

export default function (state, action) {
    case 'UPDATE_DATA':
        const res = state;
        res['list'] = [...res['list'], action.payload];
        return res;

我使用 useSelector 挂钩访问数据。

const select = useSelector(state => state);
renderData(select.userInfo.list);

但是,它似乎不会触发更新。这段代码有什么问题?

(我试图让这个问题尽可能地少。所以如果你需要更多的代码上下文,尽管问。)

【问题讨论】:

    标签: reactjs react-native redux react-redux


    【解决方案1】:

    在这里const res = state;,您将相同的state 引用传递给res。这种方式将改变原始对象。当您返回 res 时,redux 会将 res 引用与 state 引用进行比较,并会发现它们是相同的,并且无法按预期工作。

    你需要先创建一个状态外的副本:

    const res = { ...state };
    

    这样你就不会改变原始对象并且你的 redux 状态会正确更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2021-11-07
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多