在vue-cli項目里使用vuex,vuex的詳細使用


之前寫過很多vue項目,項目中使用過vuex,那個時候看vuex愣是雲里霧里,都是照葫蘆畫瓢使用,沒有清楚弄明白,

今天再看一下文檔,感覺茅塞頓開,特別寫下來,給需要的人借鑒

一,什么是vuex

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

官方文檔是這么說的,反正我是沒看明白

以自己的話說vuex是一個把多個組件通用的數據我們把它拿出來,放到一個叫store里面管理,在需要使用的組件里,我們可以拿出來使用

簡單來說就是data的共享屬性

二,關於store

“store”基本上就是一個容器,它包含着你的應用中大部分的狀態 (state)。

暫時先把state當成我們通用data來看吧,這樣就好理解咯~

三,關於State

state就是我們項目全局通用的data屬性,並且這些屬性是響應式的,也就是說當屬性發生改變時,state是會動態響應的

四,關於Getter

Getter可以使我們需要從 store 中的 state 中派生出一些狀態,例如對列表進行過濾並計數等

Vuex 允許我們在 store 中定義“getter”(可以認為是 store 的計算屬性)。就像計算屬性一樣,

getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變才會被重新計算。

五,關於Mutation

更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation。Vuex 中的 mutation 非常類似於事件:每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調函數 (handler)。這個回調函數就是我們實際進行狀態更改的地方,並且它會接受 state 作為第一個參數

五,關於Action

Action 類似於 mutation,不同在於 (划重點哦,很多面試官會問噠~) :

1, 提交的是 mutation,而不是直接變更狀態。

2, 可以包含任意異步操作。

六,關於Module

由於使用單一狀態樹,應用的所有狀態會集中到一個比較大的對象。當應用變得非常復雜時,store 對象就有可能變得相當臃腫。為了解決以上問題,Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊——從上至下進行同樣方式的分割

七,如何使用

我們講了那么多理論知識,那實際情況我們如何使用呢,一起來看吧:

首先是安裝

(1)npm install vuex --save

(2)新建倉庫

在src目錄下新建一個文件夾,我們命名為store好了,然后在該文件夾下面創建一個js文件,我們還是叫他store好啦,截圖看起來更方便哦

 

然后開始在main.js引入

安裝和引入都好了,我們來玩玩吧

在剛剛建的store文件里

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

 

我們存兩個變量來看看

找個頁面,在creat里打印一下this

creat(){

console.log(this)

}

 

嗯,找到我們剛剛創建的倉庫啦

來看看倉庫里面有什么吧

 

看到我們定義的state和mutation咯

那我們怎么拿到數據呢?

我們都可以打印出來,聰明的你應該不會被難倒吧

1,舉個例子 我們來拿state的name吧

creat(){

console.log(this.$store.state.name)

}

 

看,數據打印出來啦,是不是超級簡單

數據拿到了,我想改變他怎么辦?別擔心,我們有mutation

 

這是我們之前定義的方法

在其他頁面我們寫個function吧

 

然后在data里定義msg的值吧

 

然后我們調用changeName

 

看到了嗎 我們的數據改變咯

這里只是簡單介紹了vuex,帶領大家入門,詳細的還是去擼官方文檔吧,再見~



作者:啥啥啥娜娜
鏈接:https://www.jianshu.com/p/cba77015cd47


作者:www說
鏈接:https://www.imooc.com/article/70834
來源:慕課網


免責聲明!

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



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