【Vue】Vuex
Vuex简介
概念:
专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中管理(读、写),也是一种适用于任意组件间的通信方式。

什么时候用Vuex
①多个组件依赖于同一状态
②来自不同组件的行为需要变更为同一状态
Vuex工作原理

组件在不需要ajax请求后端参数的时候,可以直接通过commit到Mutations而不通过Action
即通过Dispatcher和actions对话,commit和mutation对话
搭建Vuex工作环境
安装vuex
npm i vuex@3
使用vuex插件
main.js
import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import VueRouter from 'vue-router'
import router from './router'
import store from './store'
Vue.config.productionTip = false
Vue.use(ElementUI)
Vue.use(VueRouter)
const vm = new Vue({
render: h => h(App),
router: router,
// 安装全局事件总线
beforeCreate() {
Vue.prototype.bus = this
},
store
}).$mount('#app')
console.log(vm)
/store/index.js
import vuex from 'vuex'
import vue from 'vue'
vue.use(vuex)
const actions = {}
const mutation = {}
const state = {}
export default new vuex.Store(
actions,
mutation,
state
)
vue.use(vuex)不能写在main.js中,因为脚手架解析main.js时会先解析import store再解析vue.use(vuex),导致store/index.js的new vuex.Store不能用
Vuex的使用
组件
<template>
<div>
<h2>Sum:{{$store.state.sum}}</h2><br/>
<select v-model="value">
<option :value="1">1</option>
<option :value="2">2</option>
<option :value="3">3</option>
</select>
<button @click="increase">+</button>
<button @click="decrease">-</button>
<button @click="increaseOdd">odd +</button>
<button @click="increaseWait">wait +</button>
</div>
</template>
<script>
export default {
data() {
return {
value: 1
}
},
methods: {
increase() {
this.$store.commit('INCREASE', this.value)
},
decrease() {
this.$store.commit('DECREASE', this.value)
},
increaseOdd() {
this.$store.dispatch('increaseOdd', this.value)
},
increaseWait() {
this.$store.dispatch('increaseWait', this.value)
}
},
}
</script>
<style>
</style>
store\index.js
import vuex from 'vuex'
import vue from 'vue'
vue.use(vuex)
const actions = {
increaseOdd(context, value) {
if(context.state % 2)
context.commit('INCREASE', value)
},
increaseWait(context, value) {
setTimeout(()=>{
context.commit('INCREASE', value)
},500)
}
}
const mutations = {
INCREASE(state, value) {
state.sum += value
},
DECREASE(state, value) {
state.sum -= value
}
}
const state = {
sum: 0
}
export default new vuex.Store({
actions,
mutations,
state
})
【Vue】Vuex的更多相关文章
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...
- 【vue】移动端demo资料
http://imzjh.com/inew/#/(移动端demo) https://github.com/liangxiaojuan/eleme(饿了么git地址) https://github.co ...
- 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo
¶项目分析 一个完整的网站服务架构,包括: 1.web frame ---这里应用express框架 2.web server ---这里应用nodejs 3.Database ---这里 ...
- 【vue】本地开发mock数据支持
项目离不开数据渲染的支持,为本地开发配置 数据 支持. (一)方式一:安装JSON Server搭建mock数据的服务器 json Server 是一个创建 伪RESTful服务器的工具. 配置流程 ...
- 【vue】npm run mock & npm run dev 无法同时运行的解决
[关于系统,没注明的都是windows系统,若以后用的是mac系统则会另外备注] 当项目数据是通过mock搭建而成(参照:[vue]本地开发mock数据支持)时,运行mock服务器和项目的命令 就参照 ...
- 【VUE】自定义组件
[VUE]自定义组件 转载: ============================================ ======================================== ...
- 【VUE】使用问题记录
[VUE]使用问题记录 ===================================================================== 1.Vue.nextTick 修改数 ...
- 【VUE】数组
[VUE]常用函数 转载:https://www.cnblogs.com/yangchongxing/p/10637087.html 目录 ============================== ...
- 【vue】生成接口模拟数据
目录 方案一:自定义模拟数据 Step1 创建json文件 Step2 在 vue.config.js 中配置 Step3 在组件中使用 (方式一) Step3 封装api (方式二) Step4 在 ...
- 【vue】vue +element 搭建项目,vuex中的store使用
概述: 每一个 Vuex 应用的核心就是 store(仓库).“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state).Vuex 和单纯的全局对象有以下两点不同: Vuex 的 ...
随机推荐
- CSS 常用样式-文字三属性
颜色 color: 作用:给文字设置颜色. 属性名 k :color 属性值 v :颜色名.颜色值. 颜色名: 颜色名就是使用颜色的英文单词进行表示. 需要记忆一些最常用的颜色名: 更多的颜色名可以通 ...
- 十大经典排序之归并排序(C++实现)
归并排序 思路:(分而治之的思想) 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列: 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置: 3.比较两个指针所指向的元 ...
- 6vue分支循环
分支v-if <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- python.字典方法。第三天
当需要为字典中的键设置默认值时,当该键没有任何值时使用它.代码如下 spam={'name':'Pooka','age':'5'} if 'color' not in sapm; spam['colo ...
- nodejs 利用URL和querystring获取get查询参数
为深入理解request的get url信息及参数传递,利用URL和querystring获取对应的信息,测试成功,记录如下: 1.编写server.js文件 http=require("h ...
- Servlet's characters of get and post
Tomcat默认是使用ISO8859-1来解码的,ISO8859-1是不支持中文的. 1.post请求解决乱码原因: 服务器不知道按哪种编码来处理HTML等文件来响应给浏览器的,所以处理post请求时 ...
- 助教工作总结(高级语言程序设计C语言)
* { font-family: 宋体 } zw { font-size: 20px; line-height: 2em } 一.助教工作的具体职责和任务 在本学期担任陈欣老师的计科专业21级c语 ...
- 去除python中数据的0值
import numpy as np a = [0, 1, 2] a = np.array(a) a = a[a != 0].tolist() print(a) //a = [1, 2]
- bilibili视频常用快捷键
Esc退出全屏 Q点赞.长按三连 W投币 E收藏 D开/关弹幕 F开/关全屏 M静音 [ 多P 上一个 ] 多P下一个 Enter发弹幕 Space播放/暂停 →单次快进5s,长按倍速播放 ←快退5s ...
- selenium 模拟鼠标滚轮,滚动到可见的选项
self.wrap_driver.move_to_element(locator=const_xpath.monitor_select) #鼠标移动到某个区域target = self.driver. ...