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)
  }
相关推荐
Juchecar2 分钟前
常见的 HTML 标签及 CSS 选择器速查表
前端
前端程序猿i15 分钟前
用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
前端·javascript·vue.js·html
Danny_FD24 分钟前
Vue2 中使用vue-markdown实现编辑器
前端·javascript·vue.js
用户游民24 分钟前
Flutter 项目热更新加载 libapp.so 文件
前端
coding随想24 分钟前
Vue和React对DOM事件流的处理方法解析
前端
用户479492835691526 分钟前
字节面试官:forEach 为什么不能被中断?
前端·javascript
ccnocare26 分钟前
window.electronAPI.send、on 和 once
前端·electron
tager31 分钟前
🍪 让你从此告别“Cookie去哪儿了?”
前端·javascript·后端
阿吉被迫了解低代码37 分钟前
前端:“学算法?狗都不... !”
前端
前端赵哈哈42 分钟前
Vue 3 + TypeScript 项目模板
前端·vue.js·vite