Vuex使用
Vuex
是一个状态管理库,使用单一状态树管理应用内的全局状态。
index.js
文件如下:
1 | import Vue from "vue"; |
1 | cart/index.js |
在main.js
中:
1 | import store from "@/store"; |
注意:
默认情况下,模块内部的 action、mutation 和 getter 是注册在全局命名空间的——这样使得多个模块能够对同一 mutation 或 action 作出响应。
即不论是在那个模块定义的,都可以使用this.$store.getters.名字
进行调用。如果希望你的模块具有更高的封装度和复用性,你可以通过添加 namespaced: true
的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。即:
1 | $store.getters["cart/getOddItem"] |
可以看到,在vuex中,只允许mutation操作修改state,构成单向数据流。示意图如下:
补充:
vue中计算属性(computed)和方法(methods)的区别:
计算属性以方法形式定义,使用时使用属性的方式进行调用;计算属性只会计算一次,结果缓存在内存中,当其相关联的数据发生改变时才会重新计算。而方法调用一次就会被执行一次。当有关数据处理逻辑较为复杂,或页面中需要多处使用时可以使用计算属性。