React数据回显

javascript 复制代码
 export function getSession(key) {  
  return sessionStorage.getItem(key)  
}  

export function setSession(key, value) {  
  sessionStorage.setItem(key, value)  
}  
  
export function clearSession(key) {  
  sessionStorage.removeItem(key)  
}  
  
export function getRouteParamSession(key) {  
  const data = JSON.parse(sessionStorage.getItem('ROUTE-PARAMS') || '{}')  
  return data[key]  
}  
   
export function setRouteParamSession(key, value) {  
  const data = JSON.parse(sessionStorage.getItem('ROUTE-PARAMS') || '{}')  
  data[key] = value  
  sessionStorage.setItem('ROUTE-PARAMS', JSON.stringify(data))  
}  
    
export function clearRouteParamSession(key) {  
  if (key === 'all') {  
    sessionStorage.removeItem('ROUTE-PARAMS')  
  } else if (key) {    // 如果 key 不是 'all',只删除一个属性而不是整个对象  
    const data = JSON.parse(sessionStorage.getItem('ROUTE-PARAMS') || '{}')  
    if (data[key]) {  
      delete data[key]  
      sessionStorage.setItem('ROUTE-PARAMS', JSON.stringify(data))  
    }  
  }    
}
javascript 复制代码
// 暂存当前页面的请求参数,达到在返回页面保持状态
const saveParams = (params)=>{
  setRouteParamSession('data1', params)
}
const getParams = ()=>{
  return getRouteParamSession('data1')
}

刷新页面清空数据

javascript 复制代码
   // 页面刷新(hooks)
  useEffect(()=>{
    const handleBeforeUnload = () => {
      clearRouteParamSession('data1')
    }
    window.addEventListener('beforeunload', handleBeforeUnload)
    return () => {
      window.removeEventListener('beforeunload', handleBeforeUnload)
      if (React.$share) {
        React.$share.destroy()
      }
    }
  },[])
javascript 复制代码
//(类组件,生命周期)
  handleBeforeUnload = () =>{
    clearRouteParamSession('data1')
  }

  componentDidMount() {
    window.addEventListener('beforeunload', this.handleBeforeUnload)
  }

  componentWillUnmount(){
    window.removeEventListener('beforeunload', this.handleBeforeUnload)
  }
相关推荐
Liudef0641 分钟前
DeepseekV3.2 实现构建简易版Wiki系统:从零开始的HTML实现
前端·javascript·人工智能·html
景早2 小时前
vue 记事本案例详解
前端·javascript·vue.js
江米小枣tonylua3 小时前
React 19.2:用 useEffectEvent 告别闭包陷阱
react.js
wangjialelele3 小时前
Qt中的常用组件:QWidget篇
开发语言·前端·c++·qt
乔冠宇4 小时前
vue需要学习的点
前端·vue.js·学习
用户47949283569154 小时前
同样是 #,锚点和路由有什么区别
前端·javascript
Hero_11274 小时前
在pycharm中install不上需要的包
服务器·前端·pycharm
爱上妖精的尾巴4 小时前
5-26 WPS JS宏数组元素添加删除应用
开发语言·前端·javascript·wps·js宏
是谁眉眼4 小时前
wpsapi
前端·javascript·html
谅望者4 小时前
Flexbox vs Grid:先学哪一个?CSS 布局完全指南(附可视化示例)
前端·css·html·css3·css布局·css flexbox·css grid