Vuex的学习
定义
Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享 在使用Vuex进行状态管理时,只需要一个共享**Store**组件,紫色组件将数据写入Store中,其他使用的组件直接从Store中读取即可
vuex的配置
安装
npm install vuex --save
新建store.js,导入
import Vuex from 'vuex' Vue.use(Vuex)
store.js中创建store对象
export default new Vuex.Store({ state:{//共享数据}, mutations:{//数据操作方法}, actions:{//异步任务}, getters:{//包装state数据的方法}, modules:{} })
挂载store对象
Vuex的核心概念
State
State是提供唯一的公共数据源,所有共享的数据都要统一放到Store的State中进行存储在store中定义
state:{//共享数据 count:0 }
在组件中访问
全局访问
<h3>{{this.$store.state.count}}</h3>
按需导入访问
映射store中的state为当前组件的computed计算属性
<h3>{{ count }}</h3> <script> import { mapState } from "vuex"; export default { computed: { ...mapState(["count"])//映射store中的state为computed } }; </script>
Mutation
提供变更存储在Store中数据的方法
在store中定义
mutations:{//数据操作方法 add(state){//默认参数为state state.count++ }, addN(state,step){//带参数的 state.count+=step } }
在组件中访问
全局访问
<button @click="addcount">+1</button> <button @click="addcountN">+3</button> methods:{ addcount(){//调用store的mutations中的add方法 this.$store.commit("add") }, addcountN(){ this.$store.commit("addN",3) } }
按需导入访问
映射store中的Mutation为当前组件的method方法
<button @click="add">-1</button> <button @click="addN">-3</button> import { mapState,mapMutations} from 'vuex' methods:{ ...mapMutations(['add','addN']),//映射store中的Mutation为method }