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判断IE6等浏览器的代码
Apr 05 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
js实现二代身份证号码验证详解
Nov 20 Javascript
JavaScript判断数组是否包含指定元素的方法
Jul 01 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
Nov 11 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
javascript折半查找详解
2015/01/26 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
详解Python 解压缩文件
2019/04/09 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python 处理文件的几种方式
2019/08/23 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
银行财务部实习生的自我鉴定
2013/11/27 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
新闻编辑求职信
2014/04/09 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
学术会议开幕词
2016/03/03 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers