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 Ajax之$.get()方法和$.post()方法
Oct 12 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
Oct 06 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
浅谈Node.js 沙箱环境
May 15 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
微信小程序公用参数与公用方法用法示例
Jan 09 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 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中GET变量的使用
2006/10/09 PHP
php验证码实现代码(3种)
2015/09/07 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
智能电子应届生求职信
2013/11/10 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
写给领导的感谢信
2015/01/22 职场文书
公务员年度个人总结
2015/02/12 职场文书
自主招生自荐信范文
2015/03/04 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python