vue

3.关于Vuex五个核心概念的理解。

2020-10-18  本文已影响0人  似朝朝我心

Vuex五个概念的简单理解。

1.State 保存共享状态信息的地方。
2.Getters 类似我们单个组件中的计算属性computed,只是它定义在Vuex中。
3.Mutations 修改状态的地方。
4.Actions 做异步操作的地方。
5.Modules 用来专门划分模块的地方,针对不同的模块作数据保存。

State 单一状态树

Getters 的基本使用,类似计算属性。

Getters作为参数使用

获取学生年龄>20的人数有几个?




Getters传递参数

Mutations状态更新

Mutations传递事件类型的同时携带参数过去

在通过mutation更新数据状态的时候,是可以携带一些的而外的参数的,这些参数被称为mutation的载荷(Payload)





上面演示了携带单个参数传递,倘若我们的参数不止一个的话,这个时候,我们需要通过以对象的形式进行传递,也就是Payload一个对象传递过去,这个时候,再从对象中取出相关的信息。




Mutation提交的两种风格

普通提交方式:通过commit进行提交。
另一种特殊的提交风格:通过一个包含type属性的对象进行提交。




Mutation响应规则

Vuex的store对象中的state状态是响应式的,当state中的数据发生改变时,Vue组件会自动更新我们的界面视图。

在state中定义的属性都会被加入到Vue响应式系统中,而响应式系统通过观察者模式会动态监听state中每个属性的变化,当state中某个属性发生变化时,响应式系统会通知所有界面中用到该属性的地方(组件),让界面发生刷新,(比如我们这里的state中有3个定义的属性:count,stuInfo,books,如果他们当中有某个属性发生变化,都会自动刷新视图)。

简单的理解就是一种数据的联动,你变我也要跟着变,某个数据发生变化就会产生的一种连锁反应。



效果图(连锁反应)如下:


想要让state中的属性被加入到Vue响应式系统,必须遵守的Vuex响应式规则,规则如下:

如果没有提前在store对象中初始化我们需要的属性,则state中的属性不会被加入到Vue响应式系统。

例子:




点击按钮查看效果:

总结:通过数组的索引值修改数组的元素本身就是不支持的,也不会加入响应式系统中,倘若真的要向state对象中赠添某个新属性时,可以使用.splice()方法或Vue.set()方法,或者用新对象给旧对象重新赋值

Vue.set(传入三个参数)方法使用:Vue.set(第一个参数要改哪个对象?第二个参数传入的是对象或者数组,对象用key键(字符串),数组用number下标,第三个参数,你要传入的值)

对象用key键获取



数组用下标:




Vue.delete()方法可以实现响应式删除。


Mutation类型常量--搬砖转换

当我们的事件类型名称是一致时,就可以使用类型常量进行转换了,避免纠错。



Mutation类型常量转换的具体步骤(以事件类型:increment为例子作为展示)

首先同样得导入定义好的常量INCREMENT



在Mutation中进行异步操作的弊端

actions 放置异步操作,它的功能和mutations类似。

Vuex的modules核心概念

modules模块是Vuex针对state单一状态树核心,而提出来的一种将代码块抽离成一个个单文件进行管理开发和维护,让开发者具备模块化开发思想,简单点就是是为了避免Vuex代码篇幅过大,避免代码过于臃肿而提出的一种解决方案思路,方便开发者后期的维护。

多个模块划分思路

我们在modules里面定义a、b、c模块都可以拥有和store对象一样的对象属性 。


简单的模块抽离组织思路

如何使用modules属性对象中细分出来的单独模块下的state、mutations、actions?

1.模块中使用state案例

项目结构拆分:将store大对象中的state、getters、mutations、actions、modules分别抽离成单个文件放置。

按照这种模块化的开发思想,所以我们要好好组织一下,重构我们之前的臃肿代码(将state、getters、mutations、actions、modules都写在一个文件里面是不推荐的)。

操作state

操作mutations(官方不推荐我们在store对象保留mutations,而state是推荐保留的,因此我们要将mutations抽离成单文件)


然后来到index.js进行导入,接着在store对象中使用即可。



getters、actions抽离成单文件,操作同上。

moudules抽离成单文件,因为模块可能有多个,官方推荐我们建一个文件夹放置模块。

上一篇 下一篇

猜你喜欢

热点阅读