vuex状态管理主要包含四个概念  mapState,mapMutations,mapGetters,mapActions。

编写vuex文件夹下面的store.js

import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex); const state = {
count:1,
cc:111
} const mutations={
add(state){
state.count+=1;
},
reduce(state){
state.count-=1;
}
}
const getters = {
count: function (state) {
return state.count += 100;
}
} const actions = {
addAction(context) {
// context.commit('add');
setTimeout(() => { context.commit('add') }, 1000);
},
reduceAction(context) {
setTimeout(() => { context.commit('reduce') }, 1000);
}
}; export default new Vuex.Store({
state,
mutations,
getters,
actions
});

项目main.js中引入vuex

import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import './style/element-variables.scss'
import store from './vuex/store'
import './config/axios.js'
import 'babel-polyfill' Vue.config.productionTip = false Vue.use(ElementUI)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})

组件页面代码如下

<template>
<div class="page">
<h1>{{msg}}</h1>
<div>
<h1>{{cc}}</h1>
<h1>{{count}}</h1>
<el-button @click="add">add++</el-button>
<el-button @click="reduce">reduce--</el-button>
<el-button @click="addAction">addAction++</el-button>
<el-button @click="reduceAction">reduceAction--</el-button>
</div>
</div>
</template>
<script>
import { mapState, mapMutations, mapGetters, mapActions } from "vuex"; export default {
data() {
return {
msg: 'vuex demo',
}
},
computed: mapState({
count: state => state.count,
cc: state => state.cc,
}),//此处mapStat函数形式科直接替代mapGetters处理数据 //mapState两种形式
// computed:{
// ...mapState([
// 'count',
// 'cc',
// ]),
// ...mapGetters([
// 'count',
// ]),
// },//此处对象扩展需在vuex文件用getters处理数据 methods: {
...mapMutations(["add", "reduce"]),
...mapActions(["addAction", "reduceAction"]), }
} </script>
<style lang="scss"> </style>

附上实际开发项目目录

在vue的组件化实际项目开发中,我们经常会遇到需要将当前组件的状态传递给其他组件。父子组件通信时,我们通常会采用 props + emit 这种方式。但当通信双方不是父子组件甚至压根不存在相关联系,或者一个状态需要共享给多个组件时,就会非常麻烦,数据也会相当难维护,这对我们开发来讲就很不友好。vuex 这个时候就很实用。

最新文章

  1. OC中的特有语法
  2. Maven的依赖范围
  3. bootstrap-validator验证问题总结
  4. 合工大OJ 1331 回文数
  5. 【jmeter】属性和变量
  6. 【安卓面试题】在一个Activity启动另一个Activity和在Service中启动一个Activity有什么区别
  7. MVC-Model数据注解(三)-Remote验证的一个注意事项
  8. WPF Image控件中的ImageSource与Bitmap的互相转换
  9. C++ 需要返回值的函数却没有返回值的情况 单例模式
  10. dedecms 文章列表和频道列表同时调用
  11. 用户输入与while循环
  12. Centos7.0 下挂载磁盘
  13. inline-block并列排序时候的影响
  14. 基于async/non-blocking高性能redis组件库BeetleX.Redis
  15. 剑指Offer 64. 滑动窗口的最大值 (其他)
  16. 【效率工具】SSH一键登录脚本(可一键从跳板机登录线上服务器)
  17. Windows安装PostgreSQL数据库 无法初始化数据库问题
  18. [javaSE] 位运算符(&amp;|^)
  19. C++之插入迭代器
  20. CentOS7 修改分辨率

热门文章

  1. vijos - P1077克隆龙 (找规律 + 指数型母函数 + python)
  2. leetcode 690. Employee Importance——本质上就是tree的DFS和BFS
  3. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
  4. 10 探索其他Excel对象
  5. 洛谷 P2585 [ ZJOI 2006 ] 三色二叉树 —— 树形DP
  6. Java序列化系列教程(下)
  7. Centos7 配置防火墙 firewall
  8. 【WIP_S4】栈
  9. bzoj 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通【记忆化搜索】
  10. (数论 欧拉筛法)51NOD 1106 质数检测