Vuex
是一个专为Vue.js应用程序开发的状态管理模式
状态管理模式
new Vue({
// state
data() {
return {
count: 0;
}
},
// view
template: `
<div>{{ count }}</div>
`,
// actions
methods: {
increment() {
this.count++
}
}
})
- state:驱动应用的数据源
- view:以声明方式将state映射到视图
- actions:相应在view上的用户输入导致的状态变化
但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:
- 多个视图依赖于同一状态(继承)
- 来自不同视图的行为需要改变同一状态(修改)
因此,把组件的共享状态抽取出来,以一个全局单例模式管理
Vuex安装及使用
<script src="/path/to/vue.js"></script>
<script src="/path/to/vuex.js"></script>
或者
// 命令行执行
npm install vue
npm install vuex
// 项目中引入、安装
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 使用
const store = new Vuex.Store({
state: {
count: 1,
token: '',
},
mutations: {
change(state) {
state.count++
},
SET_TOKEN: (state, token) => {
state.token = token
},
},
actions: {
commit('SET_TOKEN', response.data.token)
}
})
console.log(store.state.count) // 1
store.commit('change')
console.log(store.state.count) // 2
store.dispatch('GetUserInfo')
- state:存放共享数据
- mutation:定义方法修改state的值
- actions:通过dispatch分发actions,通过commit异步处理数据
- getters:类似于vue的计算属性,用来过滤一些数据
- modules:分模块管理