Vue 元件間的資料共享(5)

2021-10-04 19:20:21 字數 2330 閱讀 8949

1: props & $emit

2:依賴注入(provide inject )

3:處理邊界

4:eventbus

5:vuex

下面詳細介紹vuex方式的資料傳遞:

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

白話解釋

每乙個 vuex 應用的核心就是store(倉庫)。「store」基本上就是乙個容器,它包含著你的應用中大部分的狀態 (state)。vuex 和單純的全域性物件有以下兩點不同:

建立乙個store

//建立store之前確保已經引入vuex.js或在模組化構建系統中,請確保在開頭呼叫了 vue.use(vuex)

const store =

newvuex.store(,

//getters相當於自定義元件中的computed

getters:},

//mutations相當於自定義元件中的methods,只能做同步的操作

//使用commit 觸發 mutations

mutations:},

//actions非同步操作,例如ajax請求

//使用dispatch觸發 actions

actions:

})

state

vuex 使用單一狀態樹,這就意味著,每個應用將僅僅包含乙個 store 例項。

vuex中的state相當於元件中的data

通過使用store.state / this.$store.state

>

<

/div>

const store =

newvuex.store(}

);const counter =

}--}`,

computed:}}

//vue物件要放在最底層

const vm =

newvue(,

components:,}

)<

/script>結果:

雖然root中有data資料,但是不會從date中取資料

getter

vuex 允許我們在 store 中定義「getter」(可以認為是 store 的計算屬性)。就像計算屬性一樣,getter 的返回值會根據它的依賴被快取起來,且只有當它的依賴值發生了改變才會被重新計算。

getter 接受 state 作為其第乙個引數:

const store =

newvuex.store(,

]}, getters:}}

);const counter =

}---}---}`,

computed:}}

const vm =

newvue(,

})

結果:

)

'事件型別','事件引數');

控制台列印結果:

action

action 類似於 mutation,不同在於:

非同步過程簡單來說就是,通過(dispatch)呼叫actions中的函式,函式中做非同步請求資料,

請求結果作為同步函式的引數,(commit)呼叫actions中的同步函式,在同步函式中實現對state裡的變數賦值

Vue 元件之間共享資料的方式

父 自定義屬性名 資料 要傳遞 value 資料 子 props 父元件上的自定義屬性名 進行資料接收 在註冊元件中,繫結乙個動態自定義屬性名並且賦值 自定義屬性名 xx 父傳子 父 父傳子 子 我是 子 this.emit 自定義事件名稱 資料 子元件標籤上繫結 自定義事件名稱 函式 父 meth...

Vue元件間的通訊

1 父子元件之間的通訊 a 父 子 父元件傳遞資料給子元件 使用props b 子 父 在父元件上呼叫子元件內定義的方法 使用ref c 子 父 父元件獲取子元件內的資料 使用ref d 子 父 子元件內觸發事件,父元件監聽事件 使用 emit 可以把看成是乙個普通的html元素,註冊了dialog...

Vue 元件間的通訊

元件 component 是 vue.js 最強大的功能之一。元件可以擴充套件 html 元素,封裝可重用的 元件系統讓我們可以用獨立可復用的小組件來構建大型應用,幾乎任意型別的應用的介面都可以抽象為乙個元件樹 上面展示的可以引入所有 vue 元件的關係形式 使用props,父元件可以使用props...