Vuex|Vue集中式数据管理插件

Vuex简介

专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中管理(读写),也是一种组件间的通信方式。

  • 应用场景
    多个组件依赖于同一状态
    来自不同组件的行为需要变更同一状态

Vuex工作原理

Vuex工作原理

Vuecomponents组件调用store的dispatch传两个参数动作类型和数据传入Vuex的Actions对象(如果dispatch没有发出数据,需要Actions对象调用ajax请求询问后端BackendAPI,如果有发出数据,Vuex可以跳过Actions提交给Mutations)中,调用对象中的该动作类型;
在此函数里面再调用store的commit提交Mutations对象(Devtools开发者工具交互Mutationsd对象);
调用其中的该函数,该函数有两值state和传入的数据,在该函数内操作state对象内的数据会由Mutate改写到State对象中;
Vuex重新解析组件render渲染到Vuecomponents对象中;
Actions对象,Mutations对象和State对象三者规store管理,store要定义在根组件上方便所有组件调用,一般写在src/store/index.js

  • 食客与餐馆
    VueComponets食客,向Actions前台点餐,Actions前台告诉Mutations后厨做哪些菜,State菜做好,端给VueComponets食客

使用

在组件中用dispatch方法调用actions中的方法或者用commit调用mutations中的方法,在state中定义变量数组或者对象,在mutations用函数操作state,在组件中用$store.state对象调用各级仓库中的数据

Vuex模块式开发

vue2只能使用Vuex3,vue3只能使用Vuex4使用npm i vuex@3命令安装。

backage.json文件有vuex配置项说明安装成功

在src文件夹下创建store文件夹,在其中创建index.js在其中引入vue,vuex。使用vuex插件,引入模块化仓库,暴露一个vuex实例,在其中声明模块化仓库:

//引入Vuex -----相当于咱们最大的仓库
import Vuex from "vuex";
//引入Vue
import Vue from "vue";
//使用插件
Vue.use(Vuex);
//引入小仓库
import home from './home'


export default new Vuex.Store({
    //实现Vuex仓库模块化开发存储数据
    modules:{
        home,
    }
})

搭建模块化小仓库:定义只读对象actions,mutations,state,getter,对外声明暴露四个对象,

//state仓库存储数据的地方,
const state={
    a:1
}

//actions书写业务逻辑
const actions={

}
//mutations修改state
const mutations={

}
//getters计算属性,简化仓库数据让组件获得数据更方便
const getters={

}
export default{
    actions,
    mutations,
    state,
    getters
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。