Vuex 的结构图

工程组织

Vuex的核心管理程序 store.js

/*
vuex的核心管理程序
*/
import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex) //1. 状态
const state = { // 初始化状态
count: 0
} //2. 包含多个更新state函数的对象
const mutations = {
//+1,-1 两个mutation
INCREMENT (state) {
state.count++
},
DECREMENT (state) {
state.count--
}
} //3. 包含多个对应事件回调函数的对象
const actions = {
// 1) 增加的action
increment ({commit} ) {
// 提交一个mutation
commit('INCREMENT')
},
// 2) 减少的action
decrement ({commit}) {
commit('DECREMENT')
},
// 3) 带条件的action
incrementIfOdd ({commit,state}) {
if(state.count%2==1) {
//提交增加的mutation
commit('INCREMENT')
}
},
// 4) 异步的action
incrementAsync ({commit}) {
// 在action中直接可以执行异步的代码
setTimeout(()=>{
//500s后提交增加的mutation
commit('INCREMENT')
},500)
}
} //4. 包含多个getter 计算属性函数的对象
const getters = {
evenOrOdd (state) { //state默认就是传入的,不需要手动加载
return state.count%2==0 ? '偶数':'奇数'
}
} export default new Vuex.Store({
state, // 状态
mutations, // 包含多个更新state函数的对象
actions, // 包含多个对应事件回调函数的对象
getters, // 包含多个getter 计算属性函数的对象
})

main.js 进行全局注册,比如store组件,所有的组件对象都多了一个属性: $store

/*
入口JS
*/
import Vue from 'vue'
import App from './App.vue'
import store from './store'
// import '../static/base.css' // 创建vm ,进行全局注册!! new Vue({
el: '#app',
components: {App}, // 映射组件标签
template: '<App/>', // 指定需要渲染到页面的模板
store // 所有的组件对象都多了一个属性: $store
})

App.vue

<template>
<div style="text-align:center">
<p > click {{count}} times, count is {{evenOrOdd}} </p>
<!--老版写法: <p > click {{ $store.state.count}} times, count is {{evenOrOdd}} </p>-->
<button @click="increment">+</button>
<button @click="decrement">-</button>
<button @click="incrementIfOdd">increment If Odd</button>
<button @click="incrementAsync">increment Async</button>
</div>
</template> <script> import {mapState,mapGetters,mapActions} from 'vuex'
export default { computed: {
...mapState(['count']),
...mapGetters(['evenOrOdd']),// mapGetters 返回值类型是对象: ,
//如下为麻烦写法/老版写法::::
// evenOrOdd () { // 在这里返回一个函数的对象,而不是返回函数的值,不用加()
// return this.$store.getters.evenOrOdd
// }
// count () {
// return this.$store.state.count
// }
},
methods: {
...mapActions(['increment','decrement','incrementIfOdd','incrementAsync'])
//如下为麻烦写法/老版写法::::
// 增加
// increment () {
// //通知Vuex去增加
// this.$store.dispatch('increment') // 触发store中对应的action
// },
// decrement () {
// this.$store.dispatch('decrement')
// },
// incrementIfOdd () {
// this.$store.dispatch('incrementIfOdd')
// },
// incrementAsync () {
// this.$store.dispatch('incrementAsync')
// }
}
}
</script> <style>
</style>

浏览器效果展示

Vuex基础 -01 -实现简易计数器 -支持 加数/ 减数/ 奇数再加/ 异步加法(setTimeout 1000ms) -单组件演示语法的更多相关文章

  1. javascript基础01

    javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ...

  2. javaScript基础-01 javascript语法结构

    一.基础 字符集 JavaScript程序是用Unicode字符集编写的. .区分大小写 .空格.换行符和格式控制符 .Unicode转义序列 .标准化 二.类型.值和变量 JavaScript的数据 ...

  3. Androd核心基础01

    Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ...

  4. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  5. Linux基础01 学会使用命令帮助

    Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...

  6. 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术

    可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...

  7. LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配

    #2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  8. java基础 01

    java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ...

  9. C#3.0新增功能09 LINQ 基础01 语言集成查询

    连载目录    [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ...

随机推荐

  1. JS 各种引擎介绍

    JS 各种引擎介绍 http://www.oschina.net/project/tag/296/javascript-engine 不同浏览器有不同的JS引擎: WebKit , Safari浏览器 ...

  2. IIS中发布FTP支持断点续传

    IIS10中发布FTP默认就是支持断点续传的.

  3. linux中的文件权限chmod

    linux中的文件权限chmod ​ 还是GPU集群那点事儿,集群之间磁盘互相挂载,普通用户也可以操作/cu02_nfs./cu04_nfs文件夹,这就牵扯到权限的问题,去google发现所谓的777 ...

  4. Prometheus入门到放弃(7)之redis_exporter部署

    redis监控,prometheus需要使用redis_exporter客户端. 这里我们采用docker方式部署,既可以部署在redis所在服务器,也可以部署在其他机器: docker镜像地址:ht ...

  5. Java基础笔试练习(八)

    1. 以下关于构造函数的描述错误的是 ( ) A.每个类有且只能有一个构造函数. B.构造函数是类的一种特殊函数,它的方法名必须与类名相同 C.构造函数的主要作用是完成对类的对象的初始化工作 D.一般 ...

  6. Asp.net Core CORS 跨域

    本文主要介绍在Asp.net Core采用CORS方式解决跨域 关于跨域的原理介绍可参考Asp.net Web API 解决跨域详解 1 在Startup添加允许跨域的策略 services.AddC ...

  7. Django之拾遗

    一.设计模式 1.1 MVC 模型(M)是数据的表述,非真正数据,而是数据接口. 视图(V)是你看到的界面,是模型的表现层,此外还提供了收集用户输入的接口. 控制器(C)控制模型和视图之间的信息流动. ...

  8. AVR单片机教程——数字输出

    从上一篇教程中我们了解到,按键与开关的输入本质上就是数字信号的读取.这一篇教程要讲的是,控制LED的原理是数字信号的输出.数字IO是单片机编程之有别于桌面编程的各项内容中最简单.最基础的. 在讲数字信 ...

  9. 5. RDD编程进阶

    5.1 累加器 累加器用来对信息进行聚合,通常在向Spark传递函数时,比如使用map()函数或者用filter()传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的 ...

  10. if的条件表达式

    常用的: [ -a FILE ] 如果 FILE 存在则为真. [ -d FILE ] 如果 FILE 存在且是一个目录则返回为真. [ -e FILE ] 如果 指定的文件或目录存在时返回为真. [ ...