题记
vue项目中,多个页面之间通过路由传递数据有params和query两种传参方式,但是这两种方式在刷新页面时数据会丢失,params是直接获取不到参数,query可以获取到URL里的参数,但是也有一些问题存在。而vuex刷新之后数据也会丢失。
方法一 params传参
参数不会显示在路由中,所以刷新页面时,参数是从当前页面传给当前页面,然而当前页面并没有参数传递,所以参数会丢失。
方法二 query传参
类似GET方式传参,参数会在路由中显示,取参数是从路由中取,因为当前路由中有参数,所以刷新页面,数据不会丢失。
此外要注意传参为对象的情况,最好先用JSON.stringify()处理一下,接收时再用JSON.parse()转换成对象。
方法三 vuex + sessionstorage
在页面跳转时,修改vuex中的state的值,同时sessionstorage.setItem()保存到sessionstorage中一份,下一页面需要用数据时,再用sessionstorage.getItem()获取。
但是这种方法不好用,存数据、取数据很麻烦,需要写大量代码,而且很容易遗漏数据的状态等。
方法四 vuex-persistedstate(tuijian)
vuex-persistedstate的原理是结合了vuex和存储方式,不需要手动每次都写存储方法
// 安装 npm install vuex-persistedstate --save
import Vue from 'vue' import Vuex from 'vuex' import modules from './module' import persistedState from 'vuex-persistedstate' Vue.use(Vuex) export default new Vuex.Store({ modules, plugins: [ // vuex-persistedstate默认使用localStorage来固化数据,但是有的情况需要在浏览器窗口关闭时清除数据,所以需要设为sessionStorage保存 persistedState({ storage: window.sessionStorage }) ] })
插件默认把所有state保存,取数据需要做一下转化,state1是state中的一个数据。
JSON.parse(sessionStorage.getItem('vuex')).state1
热门文章
- 动物疫苗接种时间表图片高清(动物疫苗接种时间表图片高清大图)
- 自己在家怎么做电商没有货(自己在家怎么做电商没有货没人买怎么办啊)
- 瑞鹏宠物中心医院电话(瑞鹏宠物医院北站分院电话)
- 沈阳免费领养宠物店(沈阳免费领养宠物店怎么样)
- 「1月27日」最高速度22.7M/S,2025年Shadowrocket/Clash/V2ray/SSR每天更新免费节点订阅链接
- 「12月10日」最高速度22.3M/S,2024年SSR/Clash/V2ray/Shadowrocket每天更新免费节点订阅链接
- 猫咪打的三针疫苗多少钱啊图片(猫咪打的三针疫苗多少钱啊图片大全)
- 「1月25日」最高速度19.3M/S,2025年Clash/V2ray/Shadowrocket/SSR每天更新免费节点订阅链接
- Firefox中的HTML5输入类型“数字”
- Go1.18 新特性之多模块Multi-Module工作区模式_Golang