Vuex
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式
1. 创建一个 store
// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
num: 0
},
getters: {
num: state => state.num
},
mutations: { // mutation 必须同步执行
addNum(state) {
state.num ++
},
changeNum(state, data) {
state.num = data
}
},
actions: { // 触发mutations,可以执行异步操作
addNum(store) {
setTimeout(() => {
store.commit('addNum')
}, 1000)
},
changeNum(store, data) {
store.commit('changeNum', data)
}
}
})
export default store
2.引入store
// main.js
import Vue from 'vue'
import App from './App'
import store from './store'
new Vue({
el: '#app',
store,
template: '<App/>',
components: { App }
})
3.页面使用
读取状态
// 通过计算属性获取
computed: {
num() {
return this.$store.state.num
}
}
// 或者通过 mapGetters 函数获取
// store/index.js
getters: {
num: state => state.num
},
// 组件内
import { mapState } from 'vuex'
computed: {
...mapGetters([
'num'
])
}
修改状态
// 组件内
this.$store.commit('addNum')
// 或者
this.$store.dispatch('addNum')
Last updated