vuex是什么?
官网的解释是
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools,extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
而就我浅显的理解是
它类似一个html里面的全局变量,可运用于全局,而vue存储的东西,可以运用于vue所有的组件,方便与组件里面数据的接受与监听。
vuex 在项目中的使用【通过vue-cli 脚手架搭建的项目中】
安装
1
npm install vuex --save
在main.js中 引入
vuex核心概念的使用
//新建一个组件,假设命名为testDemo.vue
<template>
<div>
{{counts}}
</div>
</template>
<script>
export default {
name: 'testDemo',
data () {
return {
}
},
computed:{
//通过计算属性监听vuex里面 count的值
counts(){
return this.$store.getters.getCounts;
}
},
created(){
setTimeout(()=>{
//action 方法提交
this.$store.dispatch('increment',10)
},2000)
}
}
</script>
随后,可以将store在main.js中处理出来,src目录下新建一个文件夹命名为store,新建index.js,actions.js,getters.js,mutation-types.js,mutations.js
//index.js
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import actions from './actions';
import getters from './getters';
Vue.use(Vuex);
export const store = new Vuex.Store({
state: {
count: 1,
},
mutations,
actions,
getters
});
// mutation-types.js
export const INCREMENT="INCREMENT";
19
// action.js
import {
INCREMENT
} from './mutation-types';
export default {
[INCREMENT]({ commit, state },value) {
commit(INCREMENT,value);
},
};
// mutations.js
import {
testDemo.vue
<template>
<div>
{{counts}}
</div>
</template>
<script>
export default {
name: 'testDemo',
data () {
return {
}
},
computed:{
//通过计算属性监听vuex里面 count的值
counts(){
return this.$store.getters['INCREMENT'];
}
},
created(){
setTimeout(()=>{
//action 方法提交
this.$store.dispatch('INCREMENT',10)
},2000)
}
}
</script>
这样以来,逼格就立马高了一些
最后,文件的目录大概就长下图这个样子