1. 程式人生 > >Vue2.0 探索之路——vuex入門教程和思考

Vue2.0 探索之路——vuex入門教程和思考

Vuex是什麼

首先對於 vuex 是什麼,我先引用下官方的解釋。http://www.tuicool.com/articles/VviqEzM

Vuex 是一個專為 Vue.js 應用程式開發的狀態管理模式。它採用集中式儲存管理應用的所有元件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。

就我的直觀理解 vuex 類似於維護了一個全域性的 Map物件。你可以往裡存放 key-value 。然後所有的state資料操作都方法化,保證操作的可追蹤和資料的乾淨。

Vuex應用場景

其實對於vuex的應用場景一開始我有點誤區,因為我把它當做了一個從始至終類似於 localstorage的存在。後來發現一重新整理頁面,vuex中的state存放的資料會丟失。因為它只是在當前頁面初始化生成的一個例項,你一重新整理頁面所有資料重新生成,資料就沒了。

所以,vuex只能用於單個頁面中不同元件(例如兄弟元件)的資料流通。

Vuex基礎概念

vuex中涉及的概念主要有下面幾點,下面做個簡單的介紹和理解。

State

vuex的單一狀態樹,使用一個物件就包含了應用層的所有狀態。

我的理解是,state是vuex自己維護的一份狀態資料。資料的格式需要你根據業務去設計喲~~

下面是我簡單設計的todolist的state狀態樹。

Getters

getters屬性主要是對於state中資料的一種過濾,屬於一種加強屬性。比如你在做一個todolist,對於已完成的,你可以寫一個doneTodoList的屬性,在外面直接呼叫。其實他就是對於action和mutations的一個簡化。不然你寫一個doneTodoList功能,你還得寫對應的action和mutation,費勁啊。

所以,總結一下,一些簡單或通用的操作可以抽取到getters上來,方便在應用中引用。

Actions

action,動作。

對於store中資料的修改操作動作在action中提交。

其實action和mutation類似,但是action提交是mutation,並不直接修改資料,而是觸發mutation修改資料。

Mutations

更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation。

mutation中寫有修改資料的邏輯。

另外mutation裡只能執行同步操作。

Module

module ,模組化。

因為隨著後面的業務邏輯的增多,把vuex分模組的開發會使得程式碼更加簡潔清晰明瞭,比如登入一個模組,產品一個模組,這樣後面改動起來也簡單嘛。

下圖的 todo 目錄就是一個 module ,下面的 actions.js , mutations.js 就和外面的一樣。

程式碼實踐

引入vuex依賴

npm install vuex

目錄結構

store.js 將vuex維護的所有資料匯出供外部使用。

mutation_type.js 維護操作型別的常量欄位

main.js載入

頁面使用

1.讀取store裡的值:

this.$store.state.欄位名 

如果有 moudle 的話,假設叫 login ,那麼取值又要變了,加上 module 名

this.$store.state.login.mobile

2.發起操作請求:

this.$store.dispatch('action中的方法名' , '引數') ;

引數你可以隨便傳json

3.getters的用法

this.$store.getters.filterDoned 
filterDoned 是在 todo 裡寫的一個 getters 方法,就這麼呼叫噢

專案Github

寫了一個小demo方便實踐。對vuex不瞭解的朋友可以看看。純小白寫法,都能看得懂。如果覺得有所幫助可以點個star,感激不盡了~~

寫在最後

本文只是一個簡單的入門使用,

走過路過的朋友,如果對你有幫助的話不妨點個收藏或者推薦再走哈,那將是對我最大的鼓勵,謝謝啦。