vuex有哪几种属性?

简介: vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享的数据,保存到 vuex 中,方便整个程序中的任何组件直接获取或修改我们的公共数据。

vuex是什么?

vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享的数据,保存到 vuex 中,方便整个程序中的任何组件直接获取或修改我们的公共数据。

注意点: 只有需要共享的才放到vuex上, 不需要共享的数据依然放到组件自身的data上。


State

State仓库,vuex使用单一状态树,每一个应用最好仅包含一个store实例,不建议直接修改state的值,最好是通过commit方法调用mutation任务进行修改,方便后期数据的追踪;


主要特点:

  1. 一个页面只能有一个state
  2. 状态存储是响应式的
  3. 不能直接改变 state 中的状态,唯一途径显式地提交mutations

Getter

你可以理解它是一个状态计算属性,好比组件里面的computed属性,所以getter 的返回值也会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算,说白了就是对 store 中的 state 做了一层封装,getter 可以接受两个参数,第一个是状态state,第二个参数是其他getter !

Mutation

Mutations,定义方法动态修改state中的数据,不建议包含逻辑业务处理,处理一些同步任务;

更改 Vuex 的 state 中的状态的唯一方法是提交 mutation。回调函数可以接受两个参数,第一个参数是state状态,第二个参数是 mutation 的载荷就是外面store.commit 传入额外的参数。

Actions

Actions,定义方法执行异步任务一些复杂的逻辑代码,view层通过store.dispath分发Action任务;


主要特点:

  1. Action 提交的是 mutation,而不是直接变更状态。
  2. Action 可以包含任意异步操作。

Module

Module,项目特别复杂的时候使用,每一个模块拥有自己的state,mutation,Action,getter,代码逻辑更加清晰;


模块的命名空间


如果把所有的状态都放在一个 store 对象里面,当应用变得非常复杂时,store对象就有可能变得相当臃肿,维护起来也会变得相当复杂,所以我们可以用模块来划分。比如A module,B module, 在项目中很有可能Amodule内部的 action、mutation 和 getter 可能和B module内部的 action、mutation 和getter方法名定义一样,但是这些方法又都是全局的,那么假如提交一次 mutation,A module 和 B module 的mutation 都会执行,这肯定不行,所以可以用模块的命名空间来区分,可以通过添加 namespaced: true的方式使其成为带命名空间的模块。

相关文章
|
5月前
|
JavaScript
Vue computed自动计算对象中的属性
Vue computed自动计算对象中的属性
63 0
|
7月前
|
存储
vuex 有哪几种属性?
vuex 有哪几种属性?
|
JavaScript
Vue 父组件向子组件传参 props 属性
Vue 父组件向子组件传参 props 属性
107 0
|
7月前
|
存储 JavaScript API
vuex是什么,使用场景有哪些?有哪些属性
vuex是什么,使用场景有哪些?有哪些属性
59 3
|
7月前
|
存储 JavaScript
Vue3使用Pinia获取全局状态变量
Vue3使用Pinia获取全局状态变量
265 4
|
7月前
|
存储
vuex中的常用属性有哪些?
vuex中的常用属性有哪些?
36 0
|
7月前
|
JavaScript
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
Vue状态管理:什么是getters?Vuex中的getters有什么作用?
284 3
Vue3.0实现todolist-通过计算属性获取vuex中定义的todolist的数据
Vue3.0实现todolist-通过计算属性获取vuex中定义的todolist的数据
50 1
Vuex->vuex获取值以及改变值,vuex异步请求
Vuex->vuex获取值以及改变值,vuex异步请求
62 0
|
JavaScript
vue如何将父组件所有的props传递给子组件
vue如何将父组件所有的props一次性传递给子组件 <Child v-bind='$props'></Child> demo如下:
303 0