Vuex是怎么管理data里的数据呢
先简单看一下这张图
共享数据首先需要在state进行声明赋值,组件从State中获取数据,如果需要进行修改,需要用Action声明的函数去触发Mutation的函数去修改State里的数据,大致过程就是这样。
使用Vuex
新建store/index.js文件
初始化Store对象,导出,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import Vue from 'vue' import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({ state: { }, mutations: { }, actions: { }, })
|
在main.js文件引入注册
1 2 3 4 5 6
| import store from './store/index'
new Vue({ store, render: h => h(App), }).$mount('#app')
|
在组件中取值
在js文件中引入mapState
1
| import { mapState } from "vuex";
|
放在computed
1 2 3
| computed: { ...mapState(["属性名"]), },
|
跟常规的计算属性是一样的
修改state里的值
取出Mutation的修改方法
在js文件中引入mapMutation
1
| import { mapMutations } from "vuex";
|
放在methods里
1
| ...mapMutations(["函数名"]),
|
但是函数需要Action触发,引入mapActions
1
| import { mapMutations } from "vuex";
|
放在methods里
事情流触发Actions里的函数就可以进行修改了
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <template> </template>
<script> import { mapMutations } from "vuex"; import { mapState } from "vuex"; import { mapActions } from "vuex"; export default { data() { return {}; }, methods: { ...mapMutations(["函数名"]), ...mapActions(["函数名"]), }, computed: { ...mapState(["属性名"]), }, }; </script>
<style> </style>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import Vue from 'vue' import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({ state: { }, mutations: { }, actions: { }, })
|
1 2 3 4 5 6 7
| import store from './store/index'
new Vue({ store, render: h => h(App), }).$mount('#app')
|
Vuex的简单使用就到这里
后面的内容属于进阶,未完待续