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 相关文章推荐
jQuery 浮动广告实现代码
Dec 25 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
学习JavaScript设计模式之观察者模式
Apr 22 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
VUE长按事件需求详解
Oct 18 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
解决cordova+vue 项目打包成APK应用遇到的问题
May 10 Javascript
Vue开发环境中修改端口号的实现方法
Aug 15 Javascript
vue动态绘制四分之三圆环图效果
Sep 03 Javascript
JS前端使用Canvas快速实现手势解锁特效
Sep 23 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
用PHP编写和读取XML的几种方式
2013/01/12 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
用于table内容排序
2006/07/21 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
js实现验证码干扰(静态)
2021/02/22 Javascript
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Django中的forms组件实例详解
2018/11/08 Python
python pandas 时间日期的处理实现
2019/07/30 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
Python实现数字的格式化输出
2020/08/01 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
教师岗位职责范本
2013/12/29 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书