当前位置: 首页 > news >正文

uniapp vue2 vuex 持久化

1.vuex的使用

一、uniapp中有自带vuex插件,直接引用即可

二、在项目中新建文件夹store,在main.js中导入

在根目录下新建文件夹store,在此目录下新建index.js文件
在这里插入图片描述
index.js

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({state: {//公共的变量,这里的变量不能随便修改,只能通过触发mutations的方法才能改变},mutations: {//相当于同步的操作},actions: {//相当于异步的操作,不能直接改变state的值,只能通过触发mutations的方法才能改变}
})
export default store

在main.js中导入挂载vuex

import Vue from 'vue'
import App from './App'
import store from './pages/store/index.js'
Vue.prototype.$store = storeVue.config.productionTip = falseApp.mpType = 'app'const app = new Vue({store,...App
})
app.$mount()

2.使用

第一种方式:this. s t o r e 直接操作例如当取值:直接在页面中使用 t h i s . store直接操作 例如当取值:直接在页面中使用this. store直接操作例如当取值:直接在页面中使用this.store.state.变量名

第二种方法:mapState, mapGetters, mapActions, mapMutations

<template><view class="content"></view>
</template><script>import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'//导入export default {data() {return {}},computed: { //computed中注册...mapGetters(['text1']),...mapState(['text1'])}methods: {...mapMutations([]),...mapActions([])}}
</script><style>
</style>

3.vuex持久化

问题:

H5应用中存在Vuex中的数据在刷新页面后丢失了。

原因:

Vuex的 store 中的数据是保存在运行内存中的,当页面刷新时,页面会重新加载 Vue 实例,Vuex数据会重新初始化,导致页面刷新Vuex中的数据丢失的问题。

解决:

使用 vuex-persistedstate 插件
1、在项目目录下执行:npm install --save vuex-persistedstate;
2、修改store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from "vuex-persistedstate"Vue.use(Vuex)const store = new Vuex.Store({plugins: [persistedState({storage: {getItem: key => uni.getStorageSync(key),setItem: (key, value) => uni.setStorageSync(key, value),removeItem: key => uni.removeStorageSync(key)}})],state:{//存放状态"username":'',"userid":''},mutations:{//...},actions:{//...},//...
})export default store

使用后浏览器打开用控制台调试可看数据存放在 window.localStorage.vuex
这里其实就和调用uniapp提供的数据缓存API存放的数据位置一样了,官方文档链接:https://uniapp.dcloud.io/api/storage/storage.html

注意:在APP-PLUS环境下,这个数据在应用退出时默认不会被清空(或者说初始化)。
原文链接:https://blog.csdn.net/Mr_Bobcp/article/details/125876232

http://www.lryc.cn/news/225505.html

相关文章:

  • 【媒体邀约】媒体宣传——企业成长的催化剂
  • ansible问题排查
  • 7天入门python系列之第四天python数据结构
  • 远程电脑未连接显示器时分辨率太小的问题处理
  • Java 设计模式——解释器模式
  • 面试经典150题——Day37
  • 在 Arduino IDE 2.0 中安装 ESP32 板(Windows、Mac OS X、Linux)
  • 西门子S7-1200PLC混合通信编程(ModbusTcp和UDP通信)
  • Hbase 迁移小结:从实践中总结出的最佳迁移策略
  • 键盘win键无法使用,win+r不生效、win键没反应、Windows键失灵解决方案(亲测可以解决)
  • 1. 深度学习——激活函数
  • chatglm3-6b部署及微调
  • Hive 知识点八股文记录 ——(二)优化
  • 计算机技术专业CSIT883系统分析与项目管理介绍
  • gitlab安装地址
  • Spark处理方法_提取文件名中的时间
  • 技术分享 | 测试平台开发-前端开发之数据展示与分析
  • NZ系列工具NZ06:VBA创建PDF文件说明
  • redis-cli 连接 sentinel架构的redis服务
  • 使用github copilot
  • 1438 绝对差不超过限制的最长连续子数组(单调队列)
  • OpenCV入门9:图像增强和图像滤波
  • Pycharm常用快捷键和替换正则表达式
  • C#,数值计算——函数计算,Epsalg的计算方法与源程序
  • Delphi 12 重返雅典 (RAD Studio 12)
  • 手写链表C++
  • 为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?
  • MongoDB单实例安装(Linux)
  • 各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)
  • React-hooks有哪些 包括用法是什么?