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)
  }
相关推荐
be or not to be9 小时前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied9 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞9 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_233310 小时前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
GIS之路10 小时前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL11 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
天天扭码11 小时前
以浏览器多进程的角度解构页面渲染的整个流程
前端·面试·浏览器
你们瞎搞11 小时前
Cesium加载20GB航测影像.tif
前端·cesium·gdal·地图切片
南山安11 小时前
Tailwind CSS:顺风CSS
javascript·css·react.js