当前位置:   article > 正文

vuex的属性及用法-------状态管理工具_vuex models

vuex models

vuex是一个个专为 Vue.js 应用程序开发的状态管理工具,它采用集中式存储管理应用的所有组件的状态。话不多说,直接上菜。

  1. state 数据存贮
  2. getter state的计算属性
  3. mutation 更改state中状态的逻辑 同步操作
  4. action 提交mutation 异步操作
  5. model 模块化
  1. export default new Vuex.Store({
  2. // state相当于组件中的data,专门用来存放全局的数据
  3. state: {},
  4. getters: {},
  5. mutations: {},
  6. actions: {},
  7. modules: {}
  8. })

1.state 存储变量

state 存储的变量是可以全局使用的

  1. const store = new Vuex.Store({
  2. state :{
  3. a: '',
  4. b: []
  5. },
  6. })

使用:

  1. let a = this.$store.state.a
  2. let b = this.$store.state.b

2.mutation

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation

定义方法

  1. mutations: {
  2. set_a(state,payload) { //a 是存储state对象的值
  3. state.a = payload //payload 是传递的参数
  4. },
  5. set_b(state,payload) {
  6. state.b = payload
  7. },
  8. }

 调用

this.$store.commit('set_a',a)

 

3.getter

getter属性 和vue的computed属性一样--- 计算属性

  1. getters: {
  2. get_a(state) {
  3. return state.a
  4. }
  5. },

使用: 也是跟computed一样

<div>{{$store.getters.get_a}}</div>

 4.action

actions是store中专门用来处理异步的,实际修改状态值的,还是mutations

  1. actions: {
  2. // setTimeout异步操作
  3. set_aAsync(context){
  4. setTimeout(() => {
  5. context.commit('set_a')
  6. }, 1000);
  7. }
  8. },

调用:

this.$store.dispatch('set_aAsync')

 

5.model 

我们的store可以认为是一个主模块,它下边可以分解为很多子模块,子模块都可以单独领出来写,写完再导入到主模块中。

  1. models :{
  2. a: {
  3. state: {
  4. a:'aaa',
  5. },
  6. getters: {},
  7. mutations: {},
  8. actions: {},
  9. modules: {}
  10. }
  11. }

 调用(models中的state)

this.$state.state.a

调用  models中的getter、mutation和actions 的方法和平常一样。


以上就是一个比较健壮的使用 vuex 的过程,包括同步的数据保存,异步的网络请求数据的保存以及对响应结果的处理。当然,这仍然是一个初步的使用。例如,组件中使用 state、getters、mutations、actions 还有其他的方法,不用每次都使用 this.$store 来进行调用。不过,方法的使用并没有什么规定,上面的写法比较方便简洁,大多数人都会采用 this.$store 来进行触发 state、getters、mutations、actions。

但随着项目的增大,vuex 与请求接口的配合,vuex 中数据量增大后的封装与抽离都会是一些比较重要的工程。但 vuex 的方便之处正是对数据的全局管理,分包得太复杂也不见得是好事,具体自然是视情况而定。

描述如有错误,欢迎指正!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号