vuex是一个专门为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。

并以相应的规则保证状态已一种可预测的方式发生变化。

在构建一个中大型单页应用的时候,vuex就可以帮你更好的在组件外部管理状态。

vuex是模仿redux而开发的。redux由Flux演变而来,但是受Elem的启发,避开了Flux的复杂性。

vuex>redux>flux>Elm

  每一个vuex的核心就是stroe(仓库)对象,store是一个容器,包含着大部分的状态(data)

    vuex的状态存储是响应式的,当vue组件从store中读取状态的时候,若store中的状态发生变化,那么相应组件也会得到更新。

    不能直接改变store中的状态,改变store中的状态的唯一途径是提交mutations。这样使我们可以方便地跟踪每一个状态的变化,

总而让我们能够实现一些工具帮助我们更好的了解我们的应用。

 

在vue单文件里使用vuex,必须注册Vue.use(vuex)

  创建一个仓库对象,方法的参数就是仓库的配置信息

    1.state,代表仓库数据状态

    2.getters,获取仓库的数据属性,相当于组件的计算结果(computed),其他组件可以通过仓库的gettres属性获取仓库数据。带返回值的函数,第一个参数

是state属性

    3.mutations,修改仓库中的数据的属性,各个组件可以通过mutations来对数据进行修改,第一个参数是state对象,第二个参数是要设置的值。

.    4.actions,是如何处理数据,处理完的数据一般会通过提交mutations进行对仓库数据的修改,可以处理异步的数据,函数的参数是store,通过commit方法提交mutations。

  actions中使用axios请求参数。需要导入axios和urlcode  

  import axios from ‘axios’

  import urlcode from ‘urlcode-json’

 

在组件中使用仓库中的数据,通过下面这四个函数映射对象中的四个属性,可以理解为仓库对象的辅助函数

mapState  mapGetyters  mapMutations  mapActions

通过this.$store获取仓库对象;

提交仓库的actions this.$store.dispatch();

通过提交mutations改变仓库的数据 this.$store.commit("");

通过对象展开符的写法映射仓库数据  ...mapState("仓库数据1","仓库数据2");

也可以映射仓库对象中的多个gettres

 

为了使各个组件都可以访问仓库对象,需要在根组件的构造函数中注册仓库对象。

import store from "仓库对象的文件路径"

new Vue({store})

 详情请参考官方文档:https://vuex.vuejs.org/

posted on 2019-10-24 23:40  小小的雨滴  阅读(232)  评论(0编辑  收藏  举报