VUE day_06(7.22)Vuex、Mutations

一、Vuex

Vuex:全局状态共享,用于统一存储数据,在多个组件间共享使用。

配置两个组件,分别声明两个名称相同的num,通过按钮点击事件去修改num,会发现,两个组件的num是不联动的,只修改各自组件页的num

 那么我们要实现组件页之间数据的联动,就要认识一个新的东西,Vuex,在全局状态下存储数据,他是放在资源共享仓库--store里面的,因为在main.js中,初始化vue时, 被注入到vue中, 所以能全局使用。

 打开store的index.js,这里有五大核心属性,其中state,翻译过来是状态,在这里面存储共享的数据。在里面声明一个变量num,去组件里看一看是否能拿到

 

用点击事件,通过打印this,去后台找,能够发现num的位置就在$store的state里,

 

 再用事件修改全局num的值,即可。

 

 但是写法太长,简化方法是利用计算属性做映射:把长的代码变短:

 除此之外呢,vuex还提供了一种辅助函数,可以快速生成计算属性完成映射mapState会自动遍历传入的实参数组,生成映射的方法,...是展开符;它的功能就是计算属性的映射,把所有需要映射的变量放在数组里,不再需要每一个变量生一个功能函数,而且打印mapState到后台,你会发现它的本质就是做映射的函数。

 还有起别名的语法:

 总结:

  • 手动模式: 需要自己写多个方法实现state属性的映射
  • 自动模式: 用 mapState 辅助函数, 自动生成方法

二、Mutations

夫妻共享的财产,夫妻单方取钱不告知另一方是不符合规矩的,那么同道理: 对于存储在 state 中的数据, 要想做修改, 在严格模式下是不允许直接修改的!--  后台报错 但是不影响修改。

严格模式在store的index.js里加上一句strict:true,就可以开启了

 index.js中五个核心属性中的mutations : 修改state中的值,必须使用存储在这个属性中的方法来执行,mutations提供固定的一些方法来修改state中的值,除此之外不允许修改state,先存放一个方法,

 再回到App.use,添加一个按钮点击申请触发存储在mutations中的方法,

 打印this.$store到后台,能够找到numAdd1的方法,但需要注意的是,它是在_mutations里面,有_前缀,我们不能直接使用,只能去依靠一个commit的属性,翻译成中文是委托,提交;专门用于提交mutations的方法,所以我们委托$store执行numAdd1这个方法,

 

 如此操作,在严格模式下这个方法是被允许的,修改全局状态不再报错。

还支持传递参数2

方法的辅助函数  

上一部分我们知道参数集合放在computed计算属性中,state: 存储的是值, 所以在计算属性里映射,同样的方法也可以使用辅助函数中,但在这里要放到method里用mapMutations再打开,就可以直接放到事件中使用了,一个参数和两个参数有不同的写法(第二张图)。

猜你喜欢

转载自blog.csdn.net/m0_70328115/article/details/125968564
今日推荐