Vuex基础 -01 -实现简易计数器 -支持 加数/ 减数/ 奇数再加/ 异步加法(setTimeout 1000ms) -单组件演示语法
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) -单组件演示语法的更多相关文章
- javascript基础01
		javascript基础01 Javascript能做些什么? 给予页面灵魂,让页面可以动起来,包括动态的数据,动态的标签,动态的样式等等. 如实现到轮播图.拖拽.放大镜等,而动态的数据就好比不像没有 ... 
- javaScript基础-01 javascript语法结构
		一.基础 字符集 JavaScript程序是用Unicode字符集编写的. .区分大小写 .空格.换行符和格式控制符 .Unicode转义序列 .标准化 二.类型.值和变量 JavaScript的数据 ... 
- Androd核心基础01
		Androd核心基础01包含的主要内容如下 Android版本简介 Android体系结构 JVM和DVM的区别 常见adb命令操作 Android工程目录结构 点击事件的四种形式 电话拨号器Demo ... 
- java基础学习05(面向对象基础01)
		面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ... 
- Linux基础01 学会使用命令帮助
		Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ... 
- 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术
		可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ... 
- LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配
		#2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ... 
- java基础 01
		java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Ru ... 
- C#3.0新增功能09 LINQ  基础01 语言集成查询
		连载目录 [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ... 
随机推荐
- [LeetCode] 801. Minimum Swaps To Make Sequences Increasing 最少交换使得序列递增
			We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ... 
- kindeditor——开源的HTML可视化编辑器
			官网:http://kindeditor.net/demo.php 主要操作文档:http://kindeditor.net/docs/option.html 
- sql数据库查询相关操作,SQL的应用——SQL多表连查、子查询、多行子查询
			? 1 **SQL多表连查** ? 1 2 3 4 5 6 7 8 --查询员工和部门信息 select * from emp e,dept d where e.deptno=d.deptno --查 ... 
- 十、Spring的@Profile注解
			首先我们来看看spring官方文档对这个注解的解释: The @Profile annotation allows you to indicate that a component is eligib ... 
- 【转帖】处理器史话 | 服务器CPU市场的战役, AMD、Intel和ARM的厮杀
			处理器史话 | 服务器CPU市场的战役, AMD.Intel和ARM的厮杀 https://www.eefocus.com/mcu-dsp/377300 说完了个性鲜明的消费类电子,接下来聊一聊通 ... 
- 1.JVM前奏篇(看官网怎么说)
			JVM(Java Virtual Machine) 前奏篇(看官网规范怎么说) 1.The relation of JDK/JRE/JVM 在下图中,我们所接触的,最熟悉,也是经常打交道的 最顶层 J ... 
- 使用while循环来处理列表和字典——参考Python编程从入门到实践
			1. 在列表之间移动元素 unconfirmed_users = ['alice', 'brian', 'candace'] confirmed_users = [] # 验证每个用户,知道没有未验证 ... 
- Numpy学习笔记(上篇)
			目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ... 
- redis 安装使用 & SpringBoot  Redis配置
			1.安装 https://www.cnblogs.com/dingguofeng/p/8709476.html https://www.runoob.com/redis/redis-keys.html ... 
- Java Service Wrapper将jar包安装成Windows服务
			刚接触java,第一次使用Java开发windows服务,也是刚不久看了SSM框架 简直也是一头雾水,不过只要用心理解,其实很简单,下面有详细的步骤,包学包会 在windows上运行jar包,需要在工 ... 
