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学习笔记之jQuery的DOM操作
Dec 22 Javascript
js中取得变量绝对值的方法
Jan 03 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
Aug 27 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
openlayers实现地图测距测面
Sep 25 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
jquery animate 动画效果使用说明
2009/11/04 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript DOM基础
2015/04/13 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
浅谈Python中的生成器和迭代器
2020/06/19 Python
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
美术师范毕业生自荐信
2013/11/16 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
银行自荐信怎么写
2015/03/05 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python