专栏名称: 刘员外
前端
目录
相关文章推荐
51好读  ›  专栏  ›  刘员外

Vuex 入门

刘员外  · 掘金  ·  · 2019-04-20 14:23

正文

阅读 12

Vuex 入门

Vuex 是什么?

官方给出的解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。


自制vuex LOGO
自制vuex LOGO

相信很多新选手看完这段话有种绝望的感觉。开始我也是这样的,后来我想到了一个比方!

比如某年级有5个小班,每个小班有25个同学,但是只有一个老师授课,假如5个小班就对应着5个组件,每个班的25个同学就相当于每个组件中的25条数据,这个老师就相当于 vuex ,老师讲的课就相当于每一条数据。要保证每个同学受到同样的教育,就需要这个老师把每节课分别讲5遍,还不能保证每个班的同学听到的效果相同。一段时间后,老师觉得这样特别麻烦还很累,就想了一个办法,找了一个大教室,把这5个小班的同学合并到一起,这样每个课程只需要讲一次就好啦,而且还保证了每个班的同学听到的效果相同。这就是 vuex 的作用,把各个组件中用到的数据统一管理,同步发放,省时省心省力。

那这个 vuex 怎么用呢?让我们从一个简单的 Vue 计数应用开始

一、基本用法

1. 初始化并创建一个项目

vue init webpack-simple vuex-demo
cd vuex-demo
npm install

2. 安装 vuex

npm install vuex -S

3. 在 src 目录下创建 store.js 文件,并在 main.js 文件中导入并配置

store.js 中写入

import Vue from 'vue'
//引入 vuex 并 use
import Vuex from 'vuex'
Vue.use(Vuex)
复制代码

main.js 文件

import Vue from 'vue'
import App from './App.vue'
import store from './assets/store' //导入 store 对象

new Vue({
  //配置 store 选项,指定为 store 对象,会自动将 store 对象注入到所有子组件中,在子组件中通过 this.$store 访问该 store 对象 
  store, 
  el: '#app',
  render: h => h(App)
})

复制代码
4. 编辑 store.js 文件

在应用 vuex 之前,我们还是需要看懂这个流程图,其实很简单。

vuex
vuex

Vue Components 是我们的 vue 组件 组件 会触发(dispatch)一些事件或动作( Actions );
② 我们在 组件 中发出的动作,肯定是想获取或者改变数据的,但是在 vuex 中,数据是集中管理的,我们不能直接去更改数据,所以会把这个动作提交(Commit)到 Mutations 中;
③ 然后 Mutations 就去改变(Mutate) State 中的数据;
④ 当 State 中的数据被改变之后,就会重新渲染(Render)到 Vue Components (组件)中去, Vue Components (组件)展示更新后的数据,完成一个流程。

Vuex 的 核心 是 Store(仓库),相当于是一个容器,一个 Store 实例中包含以下属性的方法:

state 定义属性(状态 、数据)
getters 用来获取属性
actions 定义方法(动作)
commit 提交变化,修改数据的唯一方式就是显示的提交 mutations
mutations 定义变化,处理状态(数据)的改变
mapGetters 用来获取属性(数据)
mapActions 用来获取方法(动作)

store.js 中写入

// 定义属性(数据)
var state = {
    count:6
}
// 创建 store 对象
const store = new Vuex.Store({
    state
})

// 导出 store 对象
export default store;
复制代码
方式1、 在 app.vue 中就能通过 this.$store 访问该 store 对象 ,获取该 count 。

其中需要注意的是 this.$store 中的 store 与 main.js 中配置的 store 相对应,一定要注意大小写







请到「今天看啥」查看全文