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中获取select选中值的代码
Jun 27 Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 Javascript
js中replace的用法总结
Dec 27 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
当某个文本框成为焦点时即清除文本框内容
Apr 28 Javascript
node.js中的buffer.write方法使用说明
Dec 10 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
jQuery返回定位插件详解
May 15 jQuery
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 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
PHP调用Webservice实例代码
2011/07/29 PHP
php检测useragent版本示例
2014/03/24 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
Python正则表达式常用函数总结
2017/06/24 Python
python如何实现int函数的方法示例
2018/02/19 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python实现dijkstra最短路由算法
2019/01/17 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
销售副总经理岗位职责
2013/12/11 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
关于运动会的口号
2014/06/07 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
餐馆开业致辞
2015/08/01 职场文书
初三化学教学反思
2016/02/22 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers