Mutation不能使用異步函數(shù)

為什么必須是同步更新?
因為在開發(fā)過程中,我們常常會追蹤狀態(tài)的變化袖订。常用的手段就是在瀏覽器控制臺中調(diào)試。而在 mutation 中使用異步更新狀態(tài)谨胞,雖然也會使?fàn)顟B(tài)正常更新,但是會導(dǎo)致開發(fā)者工具有時無法追蹤到狀態(tài)的變化蒜鸡,調(diào)試起來就會很困難胯努。

index.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const state = { count: 0}

const mutations = {
  synchronization (state, params) {
    state.count += params.num
  },
  asynchronous (state, params) {
    setTimeout(() => {
      state.count += params.num
    }, 3000)
  }
}
export default new Vuex.Store({state,mutations})
<template>
  <div class="content">
    <h3>測試在mutations使用同步和異步</h3>
    <button @click="sync">同步</button>
    <button @click="async">異步</button>
    <p style="font-size: 30px;">這是vuex中的 <span style="color:red">{{ $store.state.count }}</span></p>
  </div>
</template>

export default {
  methods: {
    sync () {
      this.$store.commit({
        type: 'synchronization',
        num: 20
      })
    },
    async () {
      this.$store.commit({
        type: 'asynchronous',
        num: 20
      })
    }
  }
}

我們來看Devtools的Vuex狀態(tài)圖

一、點擊同步 (在mutations里面做同步操作)

點擊5次逢防,點擊時間線可以看到5次的點擊每次都是增加20叶沛,頁面中的count會隨著點擊變化而變化20>40>60>80>100

第1次:

image.png

第2次:

image.png

... ...

第5次:

image.png

二、點擊異步 (在mutations里面做異步操作)

1忘朝、在3s內(nèi)點擊異步按鈕5次灰署,因為異步操作未完成,所以在時間線里面可以看到點擊的這5次count都是0局嘁。頁面中的count不會隨著點擊變化而變化溉箕,而是在3s后計算總和100


image.png

2、在3s后點擊異步按鈕1次(第六次點擊)悦昵,時間線上的count為前五次的總和100肴茄,而頁面且為6次點擊的總和120


image.png

總結(jié)

可以看到在Mutation中使用異步和同步最終頁面的總和都是正確的,也就是說在Mutation中使用異步不會對數(shù)據(jù)造成丟失和其他影響但指。然而我們注意Vue Devtools顯示結(jié)果寡痰,當(dāng)我們?nèi)ゲ榭炊啻蜯utation狀態(tài)時,發(fā)現(xiàn)同步的顯示Ok棋凳,異步的Count顯示為0 和我們預(yù)期結(jié)果不一致拦坠,所以會造成狀態(tài)改變的不可追蹤,所以官方說我們Mutation是同步的剩岳!

重點事情
造成狀態(tài)改變的不可追蹤
造成狀態(tài)改變的不可追蹤
造成狀態(tài)改變的不可追蹤

在actions中就不會出現(xiàn)這種狀態(tài)改變不可追蹤的情況

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贪婉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卢肃,更是在濱河造成了極大的恐慌疲迂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莫湘,死亡現(xiàn)場離奇詭異尤蒿,居然都是意外死亡,警方通過查閱死者的電腦和手機幅垮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門腰池,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人忙芒,你說我怎么就攤上這事示弓。” “怎么了呵萨?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵奏属,是天一觀的道長。 經(jīng)常有香客問我潮峦,道長囱皿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任忱嘹,我火速辦了婚禮嘱腥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拘悦。我一直安慰自己齿兔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布础米。 她就那樣靜靜地躺著分苇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椭盏。 梳的紋絲不亂的頭發(fā)上组砚,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音掏颊,去河邊找鬼糟红。 笑死,一個胖子當(dāng)著我的面吹牛乌叶,可吹牛的內(nèi)容都是我干的盆偿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼准浴,長吁一口氣:“原來是場噩夢啊……” “哼事扭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乐横,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤求橄,失蹤者是張志新(化名)和其女友劉穎今野,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罐农,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡条霜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涵亏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宰睡。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖气筋,靈堂內(nèi)的尸體忽然破棺而出拆内,到底是詐尸還是另有隱情,我是刑警寧澤宠默,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布麸恍,位于F島的核電站,受9級特大地震影響光稼,放射性物質(zhì)發(fā)生泄漏或南。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一艾君、第九天 我趴在偏房一處隱蔽的房頂上張望采够。 院中可真熱鬧,春花似錦冰垄、人聲如沸蹬癌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逝薪。三九已至,卻和暖如春蝴罪,著一層夾襖步出監(jiān)牢的瞬間董济,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工要门, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虏肾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓欢搜,卻偏偏與公主長得像封豪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子炒瘟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容