vue 元件之間的通訊

2022-09-12 14:45:30 字數 2206 閱讀 4869

目錄3、provide 和 inject

4、$parent 和 $children

5、$attrs 和 $listeners

6、vuex

vue 元件之間通訊的六種方式

1、props 和 $emit(子 觸發 父)、ref(父 呼叫 子)

示例**如下:

// parent.vue

我是parent元件

// child.vue

我是child元件

父元件傳的值:}

修改 parentvalue

2、event bus(\(on、\)emit)

示例**如下:

// 新建乙個vue例項,作為事件匯流排;可將其註冊到全域性或者vue的propotype上

vue.propotype.eventbus = new vue();

// compa.vue

我是compa元件

value的值:}

// compb.vue

我是compb元件

修改 compa 的value

疑問點:為什麼不能使用 this.\(emit 和 this.\)on ,而要重新 new 乙個空的 vue 例項?

3、provide 和 inject

示例**:

// compa.vue

我是compa元件

value的值:}

// compb.vue

我是compb元件

呼叫 compa 的fn

4、$parent 和 $children

5、$attrs 和 $listeners

6、vuex

vuex 類似於乙個倉庫,可存放一些資料供全域性呼叫,但是重新整理頁面就會消失,若需解決此問題,可選擇將資料儲存到 vuex 的同時,將其存放到 sessionstorage 或者 localstorage 中即可。

vuex 中包括 state、mutations、actions、getters、modules 幾個部分。其中

示例**:

// module.js

const state = ;

const getters = ,

getmodelselectdatajsonstr: state => ,

getmodelclassdatajsonstr: state =>

};const mutations = ,

set_model_select_data_json_str(state, modelselectdatajsonstr) ,

set_model_class_data_json_str(state, modelclassdatajsonstr)

};const actions = , modelcreatedatajsonstr) ,

setmodelselectdatajsonstr(, modelselectdatajsonstr) ,

setmodelclassdatajsonstr(, modelclassdatajsonstr)

};// 暴露倉庫

export ;

// index.js

import vue from 'vue';

import vuex from 'vuex';

vue.use(vuex);

/** * 批量匯入module下的所有模組

* 如果module下面有自己新建的資料夾 資料夾裡面的js檔案不能用index命名 容易衝突

*/const path = require('path');

const files = require.context('./module', true, /\.js$/);

const modules = {};

files.keys().foreach(key => );

vue.use(vuex);

const store = new vuex.store();

export default store;

vue元件之間通訊

個人blog,歡迎關注加收藏 元件之間通訊的幾種方式 1.父向子傳資料 props 2.子向父傳資料 emit 3.兄弟元件傳資料 a.事件匯流排 bus 在父元件的data中bus new vue 建立 事件匯流排 b.傳遞資料 this.roo t.bu s.root.bus.root.b us...

Vue元件之間通訊

vue元件傳值有以下幾種情況 父元件向子元件傳值 子元件向父元件傳值 兄弟元件之間傳值等 一 父元件向子元件傳值 傳值方式 props 動態傳遞值 子元件son 靜態傳值 父元件 子元件 son 1 prop的大小寫 html中的attribute名對大小寫不敏感,所以prop中的駝峰值需要等價於短...

vue元件之間的通訊

區域性元件 區域性元件必須手動掛載,不然無法生效。全劇元件 全域性元件不需要手動掛載,但不常用,盡量不要在全域性上掛載變數或者元件 影響瀏覽器效能 配合模板實現元件之間的巢狀。元件是vue.js最強大的功能之一,核心目標是擴充套件htnl元素,封裝可重用 元件可按照template,style,sc...