-
简介
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
它采用集中式储存,管理应用的所有组件的状态。并以相应的规则,保证以一种可预测的方式发生变化(响应式)。
如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。如果您的应用够简单,您最好不要使用 Vuex。
-
在项目里使用方法
没安装vuex的自行安装:npm install vuex
-
创建vuex实例
文件路径:项目/src/store/index.jsimport Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); // vue使用Vuex export default new Vuex.Store({ // new Vuex.Store() 创建Vuex实例 state: {}, // 数据仓库(数据的唯一来源) getters: {}, // 用来获取数据(计算属性) mutations: {}, // 用来修改数据的(相当于function,同步) actions: {}, // 用来提交mutation(异步) modules: {} // 模块化 });
-
main.js中将vuex实例应用并挂载到vue对象上
文件路径:项目/src/main.jsimport Vue from "vue"; import App from "./App.vue"; import router from "./router"; import store from "./store"; // 引用vuex
new Vue({ router, store, render: h => h(App) }).$mount("#app");
-
-
实战代码
-
简单实现count++ 使用到state,mutations
src/store/index.js
import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); export default new Vuex.Store({ state: { count: 0, }, // 数据仓库(数据的唯一来源) mutations: { countChange(state) { state.conut++ } }, // 用来修改数据的(相当于function,同步) });
src/main.js内容同上2.2。
src/app.vue
<template> <div id="app"> <h1>count:{{ this.$store.state.count }}</h1> <button @click="contChangeF">点击count+1</button> </div> </template> <script> export default { name: "app", methods: { contChangeF() { this.$store.commit('countChange'); // 调用mutations中countChange方法,来修改数据。 } } } </script>
拓展:使用commit第二个参数,通过赋值实现上述功能。src/store/index.js
import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); export default new Vuex.Store({ state: { count: 0, }, // 数据仓库(数据的唯一来源) mutations: { countChange(state, data) { state.conut = data; } }, // 用来修改数据的(相当于function,同步) });
src/main.js内容同上2.2。
src/app.vue
<template> <div id="app"> <h1>count:{{ this.$store.state.count }}</h1> <button @click="contChangeF">点击count+1</button> </div> </template> <script> export default { name: "app", methods: { contChangeF() {
var v = this.$store.state.count++;
this.$store.commit('countChange',v); // 调用mutations中countChange方法,来修改数据。
}
}
}
</script> -
进阶实战-用户登录及权限控制
-