本文主要介紹了Vuex提升學習篇,小編覺得蠻不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家?
上一篇我們講瞭如何透過一些簡單的動作來改變store.js 中的資料對象,在實際工作中,這是完全無法滿足工作需求的,所以這篇我們來說說如何做一些簡單的流程判斷。
自製vuex LOGO
#一、比如說我現在有這麼個需求,當count < 5 的時候,就停止count-- 。這就需要用到actions
actions 定義要執行的動作,如流程的判斷、非同步請求
#
// 定义 actions ,要执行的动作,如流程的判断、异步请求 const actions ={ increment({commit,state}){ commit('increment') }, decrement({ commit, state }) { // **通过动作改变的数据,在此处来做判断是否提交** if (state.count > 5) { commit('decrement') } } }
#二、透過actions 模擬非同步請求
1. 先在App .vue 中定義好事件<template> <p id="app"> <button @click="increment">增加</button> <button @click="decrement">减少</button> //异步请求事件 <button @click="incrementAsync">异步增加</button> <h1>{{count}}</h1> </p> </template> <script> import {mapGetters,mapActions} from 'vuex' export default { name: 'app', computed:mapGetters([ 'count' ]), methods:mapActions([ 'increment', 'decrement', 'incrementAsync' ]) } </script>
// 定义 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('异步操作失败'); }) } }
三、取得資料狀態
假如我們需要知道資料的奇偶數,那麼就需要在getters 判斷。 getters 中可以取得經過處理後的數據,從而來判斷狀態var getters={ count(state){ return state.count }, EvenOrOdd(state){ return state.count%2==0 ? '偶数' : '奇数' } }
<template> <p id="app"> <button @click="increment">增加</button> <button @click="decrement">减少</button> <button @click="incrementAsync">异步增加</button> <h1>{{count}}</h1> <!-- 判断奇偶数的方法 这种写法它会自动调用 EvenOrOdd 方法中的返回值,拿到的是个属性 --> <h1>{{EvenOrOdd}}</h1> </p> </template> <script> import {mapGetters,mapActions} from 'vuex' export default { name: 'app', computed:mapGetters([ // 判断奇偶数的方法 'EvenOrOdd', 'count' ]), methods:mapActions([ 'increment', 'decrement', 'incrementAsync' ]) } </script>
以上是Vuex提升學習篇分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!