咱們都知道如何經過一些簡單的動做來改變 store.js
中的數據對象,在實際工做中,這是徹底沒法知足工做需求的,因此我來講說如何作一些簡單的流程判斷。javascript
count < 5
的時候,就中止 count--
。這就須要用到 actionsactions 定義要執行的動做,如流程的判斷、異步請求html
在 store.js 內的 actions
中vue
// 定義 actions ,要執行的動做,如流程的判斷、異步請求 const actions ={ increment({commit,state}){ commit('increment') }, decrement({ commit, state }) { // **經過動做改變的數據,在此處來作判斷是否提交** if (state.count > 5) { commit('decrement') } } }
運行項目java
<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>
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('異步操做失敗'); }) } }
運行項目es6
假如咱們須要知道數據的奇偶數,那麼就須要在 getters 中來判斷。vuex
getters 中能夠獲取通過處理後的數據,從而來判斷狀態promise
在 store.js 的 getters
中加入判斷奇偶數的方法app
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>