解决页面路由跳转导致组件更新,state和ref无法更新值

如果页面路由跳转导致组件更新,那么之前使用state或ref保存的数据都会丢失。为了解决这个问题,可以使用一些其他的方法来保存数据,例如:

  1. 使用localStorage或sessionStorage来保存数据。这些API可以在浏览器中将数据保存在本地存储中,即使页面刷新或路由跳转,数据也不会丢失。

  2. 将数据保存在全局状态管理库(如Redux)中。这样,即使组件重新渲染,数据仍然可以从全局状态中获取。

  3. 在路由跳转之前,将数据传递给下一个页面。可以使用路由库(如React Router)提供的API来传递数据。例如,使用<Link>组件时,可以将数据作为查询参数传递给下一个页面。

下面是使用localStorage来保存数据的示例代码:

import React, { useEffect } from 'react';

const MyComponent = () => {
  useEffect(() => {
    PubSub.subscribe('openSelectDate', (_, data) => {
      localStorage.setItem('myData', data[2]);
    });
  }, []);

  const savedData = localStorage.getItem('myData');

  // 在组件的其他地方使用savedData来获取保存的数据

  return (
    // JSX代码
  );
};

export default MyComponent;

在上面的示例中,我们使用localStorage来保存数据。在useEffect中,我们订阅了'openSelectDate'事件,并在回调函数中将data[2]的值保存到localStorage中。

在组件的其他地方,我们使用localStorage.getItem来获取保存的数据。即使组件重新渲染或路由跳转,数据也可以从localStorage中获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值