Vuex提升学习篇


Posted in Javascript onJanuary 11, 2018

本文介绍了Vuex 提升学习教程。如果本篇有看不明白的地方,请移步上一篇:Vuex 入门

上一篇我们讲了如何通过一些简单的动作来改变 store.js 中的数据对象,在实际工作中,这是完全无法满足工作需求的,所以这篇我们来说说如何做一些简单的流程判断。

Vuex提升学习篇

自制vuex LOGO

一、比如说我现在有这么个需求,当 count < 5 的时候,就停止 count-- 。这就需要用到 actions

actions 定义要执行的动作,如流程的判断、异步请求

在 store.js 内的 actions 中

// 定义 actions ,要执行的动作,如流程的判断、异步请求
const actions ={
  increment({commit,state}){
    commit('increment') 
  },
  decrement({ commit, state }) {
    // **通过动作改变的数据,在此处来做判断是否提交**
    if (state.count > 5) {
      commit('decrement')
    }
  }
}

运行项目

Vuex提升学习篇

二、通过 actions 模拟异步请求

1. 先在 App.vue 中定义好事件

<template>
 <div id="app">
  <button @click="increment">增加</button>
  <button @click="decrement">减少</button>
  //异步请求事件
  <button @click="incrementAsync">异步增加</button>
  <h1>{{count}}</h1>
 </div>
</template>

<script>
import {mapGetters,mapActions} from 'vuex'
export default {
 name: 'app',
 computed:mapGetters([
  'count'
 ]),
 methods:mapActions([
  'increment',
  'decrement',
  'incrementAsync'
 ])
}
</script>

2. 在 store.js 内的 actions 中添加 异步 Promise 事件

// 定义 actions ,要执行的动作,如流程的判断、异步请求
const actions ={
  increment({commit,state}){
    commit('increment') 
  },
  decrement({ commit, state }) {
    // **通过动作改变的数据,在此处来做判断是否提交**
    if (state.count > 5) {
      commit('decrement')
    }
  },
  incrementAsync({commit,state}){
    // 模拟异步操作
    var a = new Promise((resolve,reject) => {
      setTimeout(() => {
        resolve();
      }, 3000);
    })
    // 3 秒之后提交一次 increment ,也就是执行一次 increment 
    a.then(() => {
      commit('increment')
    }).catch(() => {
      console.log('异步操作失败');
    })
  }
}

运行项目

Vuex提升学习篇

三、获取数据状态

假如我们需要知道数据的奇偶数,那么就需要在 getters 中来判断。

getters 中可以获取经过处理后的数据,从而来判断状态

在 store.js 的 getters 中加入判断奇偶数的方法

var getters={
  count(state){
    return state.count
  },
  EvenOrOdd(state){
    return state.count%2==0 ? '偶数' : '奇数'
  }
}

在 App.vue 中加入

<template>
 <div id="app">
  <button @click="increment">增加</button>
  <button @click="decrement">减少</button>
  <button @click="incrementAsync">异步增加</button>
  <h1>{{count}}</h1>
  <!-- 判断奇偶数的方法 这种写法它会自动调用 EvenOrOdd 方法中的返回值,拿到的是个属性 -->
  <h1>{{EvenOrOdd}}</h1>
 </div>
</template>

<script>
import {mapGetters,mapActions} from 'vuex'
export default {
 name: 'app',
 computed:mapGetters([
  // 判断奇偶数的方法
  'EvenOrOdd',
  'count'
 ]),
 methods:mapActions([
  'increment',
  'decrement',
  'incrementAsync'
 ])
}
</script>

Vuex提升学习篇

判断奇偶数.gif

如有不明白之处,还请留言交流,或者直接翻看 API

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
javascript 对象比较实现代码
Apr 27 Javascript
js 与或运算符 || &amp;&amp; 妙用
Dec 09 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
JavaScript中数据类型转换总结
Dec 25 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 Javascript
JS生成随机打乱数组的方法示例
Dec 23 Javascript
Less 安装及基本用法
May 05 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
微信小程序实现星星评分效果
Nov 01 Javascript
浅谈Node.js爬虫之网页请求模块
Jan 11 #Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 #Javascript
angular2中Http请求原理与用法详解
Jan 11 #Javascript
基于node下的http小爬虫的示例代码
Jan 11 #Javascript
JS脚本实现网页自动秒杀点击
Jan 11 #Javascript
Javascript网页抢红包外挂实现分享
Jan 11 #Javascript
JS写谷歌浏览器chrome的外挂实例
Jan 11 #Javascript
You might like
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
PHP中基本符号及使用方法
2010/03/23 PHP
php中stream(流)的用法
2014/03/25 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
vue-router单页面路由
2017/06/17 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python实现复制整个目录的方法
2015/05/12 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python中print函数简单使用总结
2019/08/05 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
文史专业毕业生自荐信
2013/11/17 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
大专毕业生求职信
2014/07/05 职场文书
经理岗位职责
2015/02/02 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle