0%

Vue 筆記 - Vuex 基本認識

vuex

上圖為一份元件與資料要傳遞的示意圖,先前知道要傳遞資料可以使用 propsemit 兩種方式,來傳遞 sidecomponents 的資料,若資料狀態比較少,也可以使用 evenbus 來傳遞,但 headerside 是同層資料,就要使用 evenbus 來傳遞。

evenbus 比較適合使用在簡單的情境。

也不能使用全域變數,因為會失去雙向綁定的特性。

Vuex 的方式

store

Vuex 就把資料與方法統一放在這裡管理,讓不管是哪一個元件都可以來這裡取用,Vuex 較常使用在中大型網站專案上,管理資料相對好用,如果是小專案使用 vuex,會有點綁手綁腳,透過 Vue CLI 會建立好 vuex 的檔案,存放在 store 資料下的 index.js 檔案,起始看到的程式如下:

stroe/index.js

1
2
3
4
5
6
7
8
9
10
11
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
state: {},
mutations: {},
actions: {},
modules: {},
});

Vuex 使用的方法有四種

vuex function
上圖使用元件方法與 Vuex 的方法做對照,有點類似但卻稍微不太一樣,算是一種輔助記憶的方式。

  1. state:存放預設資料。
  2. action:取得非同步事件與取得遠端資料(不會改變狀態)。
  3. getter:呈現畫面之前,完成計算結果。
  4. mutation:即時改變資料內容的方法。

Vuex 的流程

vuex process
上圖為 vuex 進行的流程,元件透過 action 取得資料或進行非同步事件後,要透過 commit 方法改變 mutation 的資料狀態。

Action 階段不會改變資料內容。
mutation 階段資料才會進行更動,故可搭配 vue Devtools 做資料查看。

改變後的資料會更新道 state,並且渲染於元件。