保存 redux 存储时发生突变错误。全部复制并保存
Mutation error when saving redux store. All copied and saved
首先,在页面中,数据对象被usestate改变,屏幕被绘制!离开页面时保存滚动值和数据,以记住页面上的滚动值。确认的结果是保存了修改的值,但是回来的时候一直弹出这个错误。
const mainPageCopy = { ...store.mainPage };
mainPageList.forEach(function (value, index) {
mainPageCopy.list[index] = value;
mainPageCopy.scroll = document.querySelector(".body").scrollTop;
});
dispatch({ type: "mainPage/set", payload: mainPageCopy })
router.push(`/product/${value.product_seq}`);
这甚至没有保存到商店
您的问题与浅拷贝有关。此代码...
const mainPageCopy = { ...store.mainPage };
创建 store.mainPage
的浅表副本。由于 list
属性 是一个数组,副本将引用 store
中的相同对象。在 forEach()
循环中对它们进行更改是触发错误的原因。
试试这个
const mainPageCopy = {
...store.mainPage,
scroll: document.querySelector('.body').scrollTop,
list: [
...mainPageList,
...store.mainPage.list.slice(mainPageList.length),
],
};
dispatch({ type: "mainPage/set", payload: mainPageCopy });
这会将 list
的第一个元素替换为 mainPageList
中的所有元素,留下 store.mainPage.list
的其余部分 as-is。也没有必要在循环中分配 scroll
。
首先,在页面中,数据对象被usestate改变,屏幕被绘制!离开页面时保存滚动值和数据,以记住页面上的滚动值。确认的结果是保存了修改的值,但是回来的时候一直弹出这个错误。
const mainPageCopy = { ...store.mainPage };
mainPageList.forEach(function (value, index) {
mainPageCopy.list[index] = value;
mainPageCopy.scroll = document.querySelector(".body").scrollTop;
});
dispatch({ type: "mainPage/set", payload: mainPageCopy })
router.push(`/product/${value.product_seq}`);
这甚至没有保存到商店
您的问题与浅拷贝有关。此代码...
const mainPageCopy = { ...store.mainPage };
创建 store.mainPage
的浅表副本。由于 list
属性 是一个数组,副本将引用 store
中的相同对象。在 forEach()
循环中对它们进行更改是触发错误的原因。
试试这个
const mainPageCopy = {
...store.mainPage,
scroll: document.querySelector('.body').scrollTop,
list: [
...mainPageList,
...store.mainPage.list.slice(mainPageList.length),
],
};
dispatch({ type: "mainPage/set", payload: mainPageCopy });
这会将 list
的第一个元素替换为 mainPageList
中的所有元素,留下 store.mainPage.list
的其余部分 as-is。也没有必要在循环中分配 scroll
。