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


Vuex是什么

首先對於 vuex 是什么,我先引用下官方的解釋。

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

就我的直觀理解 vuex 類似於維護了一個全局的 Map對象。你可以往里存放 key-value 。然后所有的state數據操作都方法化,保證操作的可追蹤和數據的干凈。

Vuex應用場景

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

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

Vuex基礎概念

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

Vuex 官方文檔: https://vuex.vuejs.org/zh-cn/

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,感激不盡了~~

Demo 地址: https://github.com/XuXiaoGH/v...

Demo 預覽: http://jyzhd.cc/dist/vuex/ind...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM