首先,在页面中,使用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}`);

这甚至没有保存到store

enter image description here

推荐答案

你的问题与肤浅的复制有关.这个代码...

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 });

这将用mainPageList中的所有元素替换list中的第一个元素,剩下的store.mainPage.list保持不变.也不需要在一个循环中分配scroll.

Reactjs相关问答推荐

为什么我的功能React组件中的setInterval只更改一次值?

react-native-markdown-显示样式表

Inbox Enum类型以React组件状态时出现TypScript错误

在一个地方调用函数会影响其他地方调用该函数

react 路由导航不工作,但手动路由工作

为什么Next.js 14无法解析页面路由路径?

在下一个js中使用ESTAccountWithEmailAndPassword函数时循环

如何通过reactjs正确显示记录

useState导致对函数的无休止调用

生产部署:控制台中 Firebase 无效 api 密钥错误

如何隐藏移动导航栏后面的向下滚动图标和文本?

无法使用react-hook-form和react-places-autocomplete在字段中输入值

如何覆盖自定义 MUI 手风琴的样式(分隔线和折叠图标)

使用 react-markdown 组件时 Tailwind CSS 的问题

react - 警告:列表中的每个子元素都应该有一个独特的 keys props ,即使我已经设置了 keys

我刚刚部署了我的 Vite React 站点,但我的图标/图像没有部署

在 Reactjs 中状态发生变化时渲染一个新组件而不替换旧组件

当我在其中传递 2 个箭头函数时,为什么我的 onClick 事件不适用于 useState

使用 React、Redux 和 Firebase 的无限循环

设置 Material UI 表格默认排序