开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1525|回复: 1
收起左侧

[源码] uniapp中使用本地缓存还是使用vuex状态管理器?

[复制链接]
发表于 2021-9-29 14:53:54 | 显示全部楼层 |阅读模式   广东省揭阳市
uni-app的Storage在不同端的实现不同:



  • H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
  • App端为原生的plus.storage,无大小限制,不是缓存,是持久化的
  • 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。
  • 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
  • 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
  • 百度、字节跳动小程序文档未说明大小限制
  • 非App平台清空Storage会导致uni.getSystemInfo获取到的deviceId改变


具体对于本地缓存的使用比较简单,自己可以参考下官网文档使用就行

接下来主要针对vuex状态管理器的心得讲解

话不多说,来人,上源码
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. Vue.use(Vuex)
  4. const store = new Vuex.Store({
  5.     state: {
  6.         a1:'',//变量1
  7.         a2:'',//变量2(不需要更新的值不用定义mutations方法)
  8.         a3:{},//变量3(更新的值需要二次处理)
  9.     },
  10.     mutations: {
  11.         setVuexData2(state,data){
  12.             state.a2 = data;
  13.         },
  14.         setVuexData3(state,data){
  15.             state.a3 = data;
  16.         }
  17.     },
  18.     actions:{
  19.         actionsSetVuexData3({commit},data){
  20.             return new Promise((resolve, reject) => {
  21.                 /*二次处理*/
  22.                 commit("setVuexData3", data);
  23.                 resolve();
  24.             });
  25.         }
  26.     }
  27. })
  28. export default store
  29. **使用方法**
  30. 在main.js文件中引入
  31. import store from './store'
  32. 把store注册到vue实例上面
  33. const app = new Vue({
  34.     store,
  35.     ...App
  36. })
  37. **页面引用**
  38. //引入vuex
  39. import {mapState,mapMutations} from 'vuex';
  40. //提取store.state定义的变量,使用方式this.a1;
  41. computed: {
  42.     ...mapState(['a1'])
  43. },
  44. //更新值的有两种方式
  45. //方式一:(通过mapMutations取到vuex里面定义的函数,这个必须放在methods里面,并且是最上面的位置,避免下面自定义的方法无法使用该函数)
  46. methods: {
  47.     ...mapMutations(['setVuexData2']),
  48.     自定义方法(){
  49.         this.setVuexData2()
  50.     }
  51. }
  52. //方式二:(此方法使用的情况相对比较少,方式一足够满足大部分业务需求)
  53. let data={}
  54. this.$store.dispatch('actionsSetVuexData3',data)
  55. **js文件内部使用**
  56. 单独引入文件 import store from "@/store/index.js";
  57. js文件内部使用 store.state.a1
  58. js文件内部更新 store.commit('setVuexData2','')
复制代码
具体用法上面有注释,不清楚的可以评论区回复

首先在根目录创建个store目录,新建store.js,把上面代码从**使用方法**以上全部复制黏贴,完事


在很长的分割线下面泡着一杯茶,欢迎评论区讨论交流技术




发表于 2022-11-11 08:32:01 | 显示全部楼层   四川省泸州市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表