天天看點

【Vue】CompositionAPI 中如何使用 VueX

我們使用composition API的文法來去使用 VueX(叉)。‍‍

那麼我們先來複習一下 VueX(叉)它的一個代碼的邏輯流程,

首先我要建立一個資料,createStore 建立一個store的這樣的資料倉庫。

接着我在裡面定義state,‍‍如果我想改變state裡面資料的值的話,

首先如果異步操作,我要先通過dispatch方法派發一個action,‍‍然後執行對應的 action,action裡面去寫一些異步的操作,‍‍

action擷取到一些資料或者異步操作結束之後,它會調用 commit 方法,然後去執行一個mutation,‍‍

那麼mutation才真正的對資料做一個變更,這就是VueX(叉)它的一個使用流程。‍‍

現在我們使用composition API的文法來重新寫一下之前我們寫的功能。‍‍

代碼示例:

【Vue】CompositionAPI 中如何使用 VueX

我在首頁要去用這個東西?

如果用composition API的文法,我們要寫一個setup函數,

setup函數裡面,‍‍我想去用 store裡面的 name 資料怎麼用?

【Vue】CompositionAPI 中如何使用 VueX

在這裡面我們要引入一個useStore方法‍‍,‍‍

有了useStore方法‍‍之後就可以 const name 等于 balabala…。‍‍

然後去使用 store點state點name 擷取到 name 變量。

然後就 return name。

儲存,我們用name(它的值是dell,見第一張圖第三行代碼)

然後我們到首頁上來看一看,重新整理‍‍:

【Vue】CompositionAPI 中如何使用 VueX

在首頁上 可以看到能列印出dell。

是以如果你用composition API的文法,‍‍如果想使用store裡的資料這麼用就可以了。‍‍

當然你也可以做一個解構,怎麼解構?

可以用一個import‍‍ toRefs from vue。

然後花括号解構,我們這樣去寫:

【Vue】CompositionAPI 中如何使用 VueX

我們再到頁面上刷,還是能展示出dell:

【Vue】CompositionAPI 中如何使用 VueX

在About點vue裡面,我們也要引用對應的方法。

然後你在About點vue點選這個上面的内容的時候:

【Vue】CompositionAPI 中如何使用 VueX

它會出現handleClick這個方法,是以我定一個handleClick方法,‍‍handleClick等于一個箭頭函數,

handleClick 我們想改變store裡面的資料怎麼改變?

比如說像同步的改變直接改變,‍‍那我直接調用store.commit,‍‍觸發一個commit這樣的送出,

我觸發送出的名字叫什麼 changeName。‍‍

store觸發了changename,這個東西調commit方法的時候,它會直接派發給誰呢?‍‍

我們找到store這個檔案:

【Vue】CompositionAPI 中如何使用 VueX

它會直接派發給mutation,

是以這個時候我們沒有調用action,因為它是直接改變資料,‍‍

是以它會派發到mutation這一塊。

有寫過 changeName這樣的送出内容:

【Vue】CompositionAPI 中如何使用 VueX

如果要想監聽到changeName送出的内容的話:

【Vue】CompositionAPI 中如何使用 VueX

我要寫一個changeName這樣的方法。‍‍

當然在這裡你可以傳遞一個内容過來,比如說傳遞一個hello過去:

【Vue】CompositionAPI 中如何使用 VueX

那麼在‍‍我們的store裡面mutation的changeName裡面,

changeName 就能接收到你傳來的str,就可以改變一下‍‍ name的值。

儲存,我們到頁面上看一下,重新整理到About頁面點一下:

【Vue】CompositionAPI 中如何使用 VueX

這塊就變成hello了。

到Home頁面它現在還是一個hello:

【Vue】CompositionAPI 中如何使用 VueX

因為我們現在這個store是全局的store,‍‍它裡面的資料在一個地方改變,其他地方都會生效,是以這就是 VueX(叉)強大之處。

假設我們想有一個異步方法去改變一些資料,這個時候我們就不能直接commit了,我們要dispatch‍‍派發一個異步的action出去,

比如說叫getData:

【Vue】CompositionAPI 中如何使用 VueX

我們派發一個叫做getData這樣的‍‍ action。‍‍

在store裡面我們就可以去寫一個getData這樣的action了。‍‍

比如說名字叫做getData,

【Vue】CompositionAPI 中如何使用 VueX

比如說這一塊‍‍我可以去遠端的接口擷取一個資料 做一個異步的操作,

當然我也可以模拟一下,比如說setTimeout 就是模拟一個請求,‍‍過兩秒鐘之後,

比如說我擷取了一個叫做hello這樣的内容:

【Vue】CompositionAPI 中如何使用 VueX

然後我去改變store裡的資料,怎麼改變?

【Vue】CompositionAPI 中如何使用 VueX

我直接commit一個changeName這樣的送出。‍‍

當你觸發送出的時候,mutation又能感覺到你調用了changeName,

然後這裡面又會執行這個方法,‍‍

【Vue】CompositionAPI 中如何使用 VueX

最終我會把我的資料變成什麼?變成hello,

是以異步東西放在action裡面,‍‍真正要改資料同步的對資料的修改會放到mutation裡面去,

然後它們之間通過 commit來通信,‍‍如果你調用commit方法,直接mutations就會執行,

如果你調用dispatch方法,‍‍那麼action就會執行。

儲存,再到頁面上重新整理,‍‍到About這裡現在是dell:

【Vue】CompositionAPI 中如何使用 VueX

我點選一下,一二兩秒鐘之後 它會變成hello:

【Vue】CompositionAPI 中如何使用 VueX

這樣的話‍‍我們通過composition API的文法寫了一下如何去用VueX(叉)這樣的過程。‍‍

在composition API裡面,我們用到的一個核心的方法叫做useStore:

【Vue】CompositionAPI 中如何使用 VueX

繼續閱讀