vuex的理解

742 阅读2分钟

vuex

是 vue 的一个状态管理工具,是多个组件依赖一个属性时使用。

  • 比如A组件用到了 name 属性,B 组件也用到了 name 属性,在 name 改变时,A B 组件都有对应的业务逻辑,此时如果通过传值的方式,就会比较麻烦了,因为现在是两个组件,可能会有很多组件依赖同一个属性,还有就是存在local 缓存里面,这种方式解决了传值的问题,但是做到实时监听 local 里的数据变化又很麻烦,所以用到了vuex 。

  • 在2.6版本出了observable,用法跟vuex一样,是在vue源码里的,不用额外下载,可以理解为简版vuex。

核心字段

state 存放字段

mutations 操作 state ,规定的是不能直接操作 state ,必须通过 mutations 里面的方法修改 state 的数据

gettersstate 的数据时候的方法,可以用来做数据处理

actions 异步操作

modules 模块化状态管理,就是可以定义多个对象,里面都包含这些核心字段,意为多个 store

使用方法

第一种

  • dispatch 触发action this.$store.dispatch('方法名',参数)

  • commit 触发 mutations this.$store.commit('方法名',参数)

第二种

通过map映射vuex的方法到组件中

   ...mapMutations(['mutations的方法名'])  //这样定义完了以后就可以直接在组件使用mutations的方法
   ...mapActions(['actions的方法名']) //这样定义完了以后就可以直接在组件使用actions的方法
   ...mapGetters(['Getters的方法名']) //这样定义完了以后就可以直接在组件使用getters的方法

延伸

  • vuex的state是存在内存中的,是挂载在vue实例上的,所以页面刷新vue实例重新加载,数据就会恢复到初始状态。

  • local是物理存储,是文件形式的存储,所以vuex刷新会消失,local刷新不会消失。

这个问题在很久之前我就查过解决方法,但是基本都是大同小异,引用别的插件,当页面刷新时把vuex的state数据存在local里,刷新结束再从local取数据赋值给vuex的state。