vuex是vue的状态管理工具,用来管理项目中的公共数据能够在所有的组件中使用,一共有五大核心
state存放公共数据的地方通过this.$store.state.xxx调用,调用的时候会通过计算属性computed把state,return出去再用
mutations修改state的地方只有这里能修改state通过this.$store.commit调用
getters相当于是之前的计算属性通过this.$store.getters调用
actions执行异步操作的地方通过this.$store.dispatch调用
modules模块化 每一个modules 里面都包含其他四大核心
vuex 缺点就是刷新数据会丢失 我们可以保存本地存储 或者 安装 vuex 持久化插件 vuex-persist 去实现自动本地存储
vuex的执行机制:先在页面中通过 this.$store.dispatch 调用 action 再在 actions 中通过 commit 触发 mutations 方法
vuex的辅助函数是vuex的语法糖
mapState和mapGetters展开在计算属性里
mapMutation和mapAction 展开在方法里
用的时候都先 import 引入
import { mapState, mapMutations } from "vuex";
computed: {
// name() {
// return this.$store.state.name;
// },
...mapState(["name", "age"]),
},
methods: {
// change() {
// this.$store.commit("change")
// },
...mapMutations(["change"]),
//调用mutation修改name
},
modules怎么使用?
当vuex里数据很多的时候我们可以分模块管理数据建立不同的js文件作为我们的模块文件,每一个模块里都有 state 等其他的四大核心,把这个js文件引入到 store/index.js 中 在 modules 中注册,使用模块里的数据的时候
this.$store.state.xx(模块名字).arr(state 数据名字)
如果使用模块里的 mutations 方法
首先在模块里跟 state 同级的地方开启一个命名空间 namespaced:true
使用的时候 this.$store.commit("a(模块名字)/add(模块里方法的名字)")