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

最后做下总结,我们使用 Store/State 定义和管理应用的核心数据,在组件中通过compute属性调用Getters 中的数据,如果我们要操作数据,我们可以通过使用 dispatch 方法调用已注册的 Actions 方法,Actions 再去调用相关的 mutations 进行数据的操作。
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
count: 1000
},
mutations: {
add (state) { // 注册事件:同步方法
state.count++
}
},
actions: {
delayAdd (context) { // 触发事件:异步方法
setTimeout(() => {
context.commit('add')
}, 1000)
}
},
modules: {}
})
<template>
<div>
{{count}}
<button @click="add">add</button>
</div>
</template>
<script>
export default {
computed: {
count () {
return this.$store.state.count
}
},
methods: {
add () {
this.$store.commit('add')
}
}
}
</script>
页面默认显示数字10,每一次单击按钮,数字立马增加1.
<template>
<div>
{{count}}
<button @click="add">add</button>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: mapState({
count: 'count'
}),
methods: {
add () {
this.$store.dispatch('delayAdd')
}
}
}
</script>
页面默认显示数字10,每一次单击按钮,数字1秒钟后增加1.
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
count: 10
},
getters: {
getCount (state) {
return state.count
}
},
mutations: {
addition (state) {
state.count++
}
},
actions: {},
modules: {}
})
<template>
<div>
{{count}}
<button @click="add">add</button>
</div>
</template>
<script>
export default {
computed: {
count () {
return this.$store.getters.getCount
}
},
methods: {
add () {
this.$store.commit('addition')
}
}
}
</script>
页面默认显示数字10,每一次单击按钮,数字立马增加1
export default {
state: {
count: 0
},
getters: {
getCount (state) {
return state.count
}
},
mutations: {
addition (state) {
state.count++
}
},
actions: {},
modules: {}
}
import Vue from 'vue'
import Vuex from 'vuex'
import visit from './visit'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
visit
}
})
<template>
<div>
{{count}}
<button @click="add">add</button>
</div>
</template>
<script>
export default {
computed: {
count () {
return this.$store.getters.getCount
}
},
methods: {
add () {
this.$store.commit('addition')
}
}
}
</script>
页面默认显示数字0,每一次单击按钮,数字立马增加1