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

 更新时间:2023年10月19日 10:04:36   作者:痴心阿文  
这篇文章主要介绍了Vue全局共享数据之globalData,vuex,本地存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

写在最前面,把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用法

//store下的index.js存储vuex数据
 
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
 
const vuexLocal = new VuexPersistence({
  storage: window.localStorage,
});
 
export default new Vuex.Store({
  state: {
    count:20
  },
  plugins: [vuexLocal.plugin],
});
 
 
 
//vue3
 
state: {
   passwordState:false,//登录状态
},
mutations:{
    // 设置修改登录状态的方法
    setPasswordState(state,value){
        state.passwordState = value; 
     },
}
 
 
 
//VUE2中VueX用法
 
import {mapState } from "vuex";
 
export default {
  computed: {
      ...mapState({count:'count'}),//方法2
  },
  computed: mapState({
    count: 'count', //方法3
    count: (Store) => Store.count, // 方法4
    count: function (Store) { // 方法5
      return '123:' + Store.count
    },
  }),
  methods:{
 
      submit2(){
        console.log(this.$store.state.count,"===");//方法1
        console.log(this.count,"count")
      }
 
  },
}
 
//vue3中VueX用法
 
const storeState=mapState(['count','name'])
const state={}
 
Object.keys(storeState).forEach(Key=>{
	const fn=storeState[Key].bind({$store:store})
	state[Key]=computed(fn)
})
 
 
//返回...state就行了
 
//(2)使用computed一个一个解析
 
import {useStore} from 'vuex'
import {computed} from 'vue'
 
const store=useStore()
const state=computed(()=>store.state.name)
======================================================
import { onMounted } from 'vue'
import { useStore } from 'vuex'
export default {
   setup(){
     //把useStore赋值
     const $store = useStore();
     onMounted(()=>{
        //拿到vuex的值
        console.log($store.state.passwordState) // false
        //改变vuex的值
        $store.commit('setPasswordState',true) //调用vuex的方法
        //再次打印
        console.log($store.state.passwordState) // true
     })
     return{
     
     }
   }
}

三、本地存储

  • localStorage:可长期存储数据,除非用户清楚localStorage信息,否则数据会一直存在。同一中浏览器之间,不同页面,数据可以共享。
  • sessionStorage:短期存储数据,用户关闭标签页后或直接关闭浏览器后数据会清空。同一浏览器不同页面之间,数据不可共享

存储用法:

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

读取用法,如何获取到:

//长期存储
localStorage.getItem("insuranceCode")
 
//短期存储
sessionStorage.getItem("insuranceCode")

清除用法:

    // 清除insuranceCode
 
    localStorage.removeItem("insuranceCode");
 
    sessionStorage.removeItem("insuranceCode");
 
    // 清除所有
 
    localStorage.clear();
 
    sessionStorage.clear();

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

uniapp的数据缓存

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

//uni.setStorageSync(KEY,DATA) 存储
 
try {
	uni.setStorageSync('storage_key', 'hello');
} catch (e) {
	// error
}
 
 
 
 
 
//uni.getStorageSync(KEY)
 
//从本地缓存中同步获取指定 key 对应的内容。
 
 
try {
	const value = uni.getStorageSync('storage_key');
	if (value) {
		console.log(value);
	}
} catch (e) {
	// error
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue实现点击导航栏当前标签后变色功能

    Vue实现点击导航栏当前标签后变色功能

    这篇文章主要为大家详细介绍了Vue实现点击导航栏当前标签后变色功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Vue 中如何将函数作为 props 传递给组件的实现代码

    Vue 中如何将函数作为 props 传递给组件的实现代码

    这篇文章主要介绍了Vue 中如何将函数作为 props 传递给组件的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • vue代码分割的实现(codesplit)

    vue代码分割的实现(codesplit)

    这篇文章主要介绍了vue代码分割的实现(codesplit),做了代码分割后,会将代码分离到不同的bundle中,然后进行按需加载这些文件,需要的朋友可以参考下
    2018-11-11
  • vue2封装webSocket的实现(开箱即用)

    vue2封装webSocket的实现(开箱即用)

    在Vue2中,可以使用WebSocket实时通信,本文主要介绍了vue2封装webSocket的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • vue第一次获取不到元素的解决方法记录

    vue第一次获取不到元素的解决方法记录

    Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作。这篇文章主要给大家介绍了关于vue第一次获取不到元素的解决方法,需要的朋友可以参考下
    2021-06-06
  • 一文详解Vue中如何实现页面骨架屏

    一文详解Vue中如何实现页面骨架屏

    为了提升页面加载速度,我们可以使用页面骨架屏技术来优化用户感知,下面就跟随小编一起学习一下如何在vue中实现页面骨架屏吧
    2024-03-03
  • vue教程之toast弹框全局调用示例详解

    vue教程之toast弹框全局调用示例详解

    这篇文章主要为大家详细介绍了vue教程之toast弹框全局调用示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • vue-dplayer视频播放器组件的使用详解

    vue-dplayer视频播放器组件的使用详解

    Vue-DPlayer是一个易于使用、高性能的基于Vue.js的视频播放器组件,这篇文章将为大家详细介绍一下vue-dplayer视频播放器组件的安装与使用,需要的小伙伴可以参考下
    2023-09-09
  • Jenkins Sidebar Link插件实现添加侧边栏功能详解

    Jenkins Sidebar Link插件实现添加侧边栏功能详解

    这篇文章主要介绍了vue框架实现添加侧边栏,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 一文详解vue各种权限控制与管理实现思路

    一文详解vue各种权限控制与管理实现思路

    这篇文章主要为大家介绍了vue各种权限控制与管理的实现思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论