小言_互联网的博客

Vue全局共享数据之globalData,vuex,本地存储使用方法

419人阅读  评论(0)

目录

 一、globalData

 二、vuex存储方式 1.vue2用法,2.vue3用法

 三、本地存储

uniapp的数据缓存


写在最前面,把vue能用到的存储方法都整理拿出来,方便阅读以及工作用。🍉🍉🍉可以收藏起来即拿即用

 Vue全局共享数据之globalData,vuex,本地存储使用方法

 一、globalData

小程序有globalData,这是一种简单的全局变量机制。这套机制在uni-app里也可以使用,并且全端通用。

🍉🍉🍉js中操作globalData的方式如下: getApp().globalData.text = 'test'

在应用onLaunch时,getApp对象还未获取,暂时可以使用this.globalData获取globalData。

如果需要把globalData的数据绑定到页面上,可在页面的onShow页面生命周期里进行变量重赋值。

nvue的weex编译模式中使用globalData的话,由于weex生命周期不支持onShow,但熟悉5+的话,可利用监听webview的addEventListener show事件实现onShow效果,或者直接使用weex生命周期中的beforeCreate。但建议开发者使用uni-app编译模式,而不是weex编译模式。

globalData是简单的全局变量,如果使用状态管理,请使用vuex(main.js中定义)

🍉🍉🍉具体可以看官网:uni-app官网

 在js中操作globalData的方式如下:

 获取方式:getApp().globalData.text='test'

 二、vuex存储方式 1.vue2用法,2.vue3用法


  
  1. //store下的index.js存储vuex数据
  2. import Vue from "vue";
  3. import Vuex from "vuex";
  4. Vue. use( Vuex);
  5. const vuexLocal = new VuexPersistence({
  6. storage: window. localStorage,
  7. });
  8. export default new Vuex. Store({
  9. state: {
  10. count: 20
  11. },
  12. plugins: [vuexLocal. plugin],
  13. });
  14. //vue3
  15. state: {
  16. passwordState: false, //登录状态
  17. },
  18. mutations:{
  19. // 设置修改登录状态的方法
  20. setPasswordState( state,value){
  21. state. passwordState = value;
  22. },
  23. }

  
  1. //VUE2中VueX用法
  2. import {mapState } from "vuex";
  3. export default {
  4. computed: {
  5. ... mapState({ count: 'count'}), //方法2
  6. },
  7. computed: mapState({
  8. count: 'count', //方法3
  9. count: (Store) => Store. count, // 方法4
  10. count: function ( Store) { // 方法5
  11. return '123:' + Store. count
  12. },
  13. }),
  14. methods:{
  15. submit2( ){
  16. console. log( this. $store. state. count, "==="); //方法1
  17. console. log( this. count, "count")
  18. }
  19. },
  20. }
  21. //vue3中VueX用法
  22. const storeState= mapState([ 'count', 'name'])
  23. const state={}
  24. Object. keys(storeState). forEach( Key=>{
  25. const fn=storeState[ Key]. bind({ $store:store})
  26. state[ Key]= computed(fn)
  27. })
  28. //返回...state就行了
  29. //(2)使用computed一个一个解析
  30. import {useStore} from 'vuex'
  31. import {computed} from 'vue'
  32. const store= useStore()
  33. const state= computed( ()=>store. state. name)
  34. ======================================================
  35. import { onMounted } from 'vue'
  36. import { useStore } from 'vuex'
  37. export default {
  38. setup( ){
  39. //把useStore赋值
  40. const $store = useStore();
  41. onMounted( ()=>{
  42. //拿到vuex的值
  43. console. log($store. state. passwordState) // false
  44. //改变vuex的值
  45. $store. commit( 'setPasswordState', true) //调用vuex的方法
  46. //再次打印
  47. console. log($store. state. passwordState) // true
  48. })
  49. return{
  50. }
  51. }
  52. }

 三、本地存储

    localStorage:可长期存储数据,除非用户清楚localStorage信息,否则数据会一直存在。同一中浏览器之间,不同页面,数据可以共享。

    sessionStorage:短期存储数据,用户关闭标签页后或直接关闭浏览器后数据会清空。同一浏览器不同页面之间,数据不可共享

存储用法:


  
  1. // 将this.pickerItem的数据存储入insuranceCode,需提前转化成string类型
  2. pickerItem:{
  3. id: that. item. id,
  4. limit: 100,
  5. page: 1,
  6. }
  7. //长期存储
  8. localStorage. setItem( "insuranceCode", JSON. stringify( this. pickerItem));
  9. //短期存储
  10. sessionStorage. setItem( "insuranceCode", JSON. stringify( this. pickerItem));

读取用法,如何获取到:


  
  1. //长期存储
  2. localStorage. getItem( "insuranceCode")
  3. //短期存储
  4. sessionStorage. getItem( "insuranceCode")

清除用法:


  
  1. // 清除insuranceCode
  2. localStorage. removeItem( "insuranceCode");
  3. sessionStorage. removeItem( "insuranceCode");
  4. // 清除所有
  5. localStorage. clear();
  6. sessionStorage. clear();

最后补充个uniapp的数据缓存。🍉🍉🍉

uniapp的数据缓存

 

 

这里就整个经常用的,其他的可以看下面的图片。 懒.... 


  
  1. //uni.setStorageSync(KEY,DATA) 存储
  2. try {
  3. uni. setStorageSync( 'storage_key', 'hello');
  4. } catch (e) {
  5. // error
  6. }
  7. //uni.getStorageSync(KEY)
  8. //从本地缓存中同步获取指定 key 对应的内容。
  9. try {
  10. const value = uni. getStorageSync( 'storage_key');
  11. if (value) {
  12. console. log(value);
  13. }
  14. } catch (e) {
  15. // error
  16. }


转载:https://blog.csdn.net/zhangxueyou2223/article/details/128373939
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场