如何使用vuex结合localstorage动态监听storage变化

这次给大家带来如何使用vuex结合localstorage动态监听storage变化,使用vuex结合localstorage动态监听storage变化的注意事项有哪些,下面就是实战案例,一起来看一下。

需求:不同组件间共用同一数据,当一个组件将数据发生变化时,其他组件也可以响应该变化。

分析:vue无法监听localstorage的变化。localstorage主要用于不同页面间传值,vue适合组件间传值。对于组件间共用同一数据又想保存住信息或者再页面刷新的时候不丢失数据(vuex在页面刷新的时候存储的值会丢失,localstorage存储在本地浏览器中),可以采用vuex+localstorage的方式。

关于vuex和storage的区别

1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地

2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。

3.永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。

注:很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。

关于vuex参考文档:http://vuex.vuejs.org/zh-cn/index.html

实现过程:以首页展示用户头像信息,修改个人信息在公共组件头部组件中为例,当用户修改个人信息时首页的图片实时变化,如果不对头像信息做存储更新,每次用户修改完只有刷新页面或者从其他页面返回回来才能看到变化,即新设置的头像信息,仅展示核心代码。

1.首先先定义一个变量在state中。State负责存储整个应用的状态数据,后期就可以使用this.$store.state直接获取状态。也可以利用vuex提供的mapState辅助函数将state映射到计算属性中去。

const state = { imgInfo:null //首页头像信息}

登录后复制

2.mutations里面存储localstorage的信息。Mutations可以更改状态,本质就是用来处理数据的函数,其接收唯一参数值state。定义的mutation必须是同步函数。this.$store.commit(mutationName)是用来触发一个mutation的方法,或者使用辅助函数mapMutations直接将触发函数映射到methods上,这样就能在元素事件绑定上直接使用了。

export const SETIMGINFO = 'SETIMGINFO'[SETIMGINFO] (state,info) { state.imgInfo=info localStorage.setItem('imgInfo',info) }

登录后复制

3.getter里面获取localstorage的信息。有些状态需要做二次处理,就可以使用getters。通过this.$store.getters.valueName对派生出来的状态进行访问。或者直接使用辅助函数mapGetters将其映射到本地计算属性中去。

getImgInfo(state){  if(localStorage.getItem('imgInfo')){  state.imgInfo=localStorage.getItem('imgInfo')  }  return state.imgInfo }

登录后复制

4.在需要对storage进行操作的页面引用mapMutations函数

import {mapMutations} from 'vuex' //引入mapMutations ...mapMutations([        'SETIMGINFO'  ]),this.SETIMGINFO(this.imgInfo)  //在需要的地方引用 mutations里面定义的方法

登录后复制

5.在需要获取storage信息的页面引用mapGetters辅助函数

import {mapGetters} from 'vuex'computed:{  ...mapGetters([     'getImgInfo'  ]) },watch:{ //动态监听state的变化,实时改变页面的数据  getImgInfo: function(li) { //li就是改变后的state里面的imgInfo  let vm = this;   this.imgInfo=li //data声明一个变量,在html引用。如果storage的值发生变化就实时刷新变量的值。  } },

登录后复制

6.模板中对vuex的值的引用

如何使用vuex结合localstorage动态监听storage变化 //三元不等式,如果state发生变化有值就赋值给img标签,如果没有即刚进页面就赋值给create生命周期函数中从接口读出来的数据

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS实现雪花飘落动画步骤详解

怎样使用Vue+canvas实现移动端手写板功能

以上就是如何使用vuex结合localstorage动态监听storage变化的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2752090.html

(0)
上一篇 2025年3月8日 06:08:07
下一篇 2025年2月23日 04:35:07

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎样使用vue,vue-router, vuex及addRoutes进行权限控制

    这次给大家带来怎样使用vue,vue-router, vuex及addRoutes进行权限控制,使用vue,vue-router, vuex及addRoutes进行权限控制的注意事项有哪些,下面就是实战案例,一起来看一下。 基于vuex, …

    2025年3月8日
    200
  • 如何使用nodejs日志模块winston

    这次给大家带来如何使用nodejs日志模块winston,使用nodejs日志模块winston的注意事项有哪些,下面就是实战案例,一起来看一下。 winston 日志模块 在使用 nodejs winston 模块中,加上相关的两个模块,…

    编程技术 2025年3月8日
    200
  • 如何使用Vue中watch

    这次给大家带来如何使用Vue中watch,使用Vue中watch的注意事项有哪些,下面就是实战案例,一起来看一下。 假设有如下代码: fullname: {{fullname}} FirstName: new Vue({ el: ‘#roo…

    编程技术 2025年3月8日
    200
  • 怎样实现Vue项目中使用Vux

    这次给大家带来怎样实现Vue项目中使用Vux,Vue项目中使用Vux的注意事项有哪些,下面就是实战案例,一起来看一下。 默认已安装vue环境 1.安装vux npm install vux –save-dev 2.安装vux-l…

    2025年3月8日
    200
  • 如何操作Vue项目内使用d3.js

    这次给大家带来如何操作Vue项目内使用d3.js,Vue项目内使用d3.js的注意事项有哪些,下面就是实战案例,一起来看一下。 之前写一个 Demo里面 有些东西要使用d3实现一些效果 但是在很多论坛找资源都找不到可以在Vue里面使用D3.…

    2025年3月8日
    200
  • 如何制作并使用Vue波纹按钮组件

    这次给大家带来如何制作并使用Vue波纹按钮组件,制作并使用Vue波纹按钮组件的注意事项有哪些,下面就是实战案例,一起来看一下。 先说一下用法: 默认按钮默认按钮定义速度和初始的波浪透明度 登录后复制 原理: 这里用的是canvas + re…

    编程技术 2025年3月8日
    200
  • 怎样进行JS内DOM节点使用

    这次给大家带来怎样进行JS内DOM节点使用,JS内DOM节点使用的注意事项有哪些,下面就是实战案例,一起来看一下。 DOM操作在JS中可以说是非常常见了吧,很多网页的小功能的实现,比如一些元素的增删操作等都可以用JS来实现。那么在DOM中我…

    2025年3月8日
    200
  • 怎样操作vscode内使用.vue代码

    这次给大家带来怎样操作vscode内使用.vue代码,操作vscode内使用.vue代码的注意事项有哪些,下面就是实战案例,一起来看一下。 1.设置.vue模板 打开注意事项,点击文件 —— 首选项 —— 用户代码片段,会弹出来一个输入框。…

    2025年3月8日
    200
  • 通过在vue项目中使用ueditor(详细教程)

    下面我就为大家分享一篇vue项目中使用ueditor的实例讲解,具有很好的参考价值,希望对大家有所帮助。 以vue-cli生成的项目为例 1.static文件夹下先放入ueditor文件 2.index.html添加如下代码 登录后复制 立…

    编程技术 2025年3月8日
    200
  • 如何使用Angular5路由传值

    这次给大家带来如何使用Angular5路由传值,使用Angular5路由传值的注意事项有哪些,下面就是实战案例,一起来看一下。 目前Angular已经升级到了稳定版本Angular5,这次升级更小更快以及更稳定!路由可以说是Angular甚…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论