国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue組件之間的數據傳遞方法詳解

2024-05-06 15:40:24
字體:
來源:轉載
供稿:網友

(1)props屬性:

在父組件中,可以通過子組件標簽屬性的形式將數據或者函數傳給子組件,子組件通過props去讀取父組件傳過來的數據

用法

父組件傳數據給子組件:

    一般的屬性值都是用來給子組件展示的

子組件傳數據給父組件

    屬性值為函數類型的,一般是用來子組件向父組件傳遞數據,子組件通過調用父組件傳過來的函數,可以修改父組件的狀態數據

缺點:

    隔層組件間傳遞: 必須逐層傳遞(麻煩) 兄弟組件間: 必須借助父組件(麻煩)

注意:

//子組件獲取父組件傳過來的值props: {  obj: {//obj為{id:'2'}    type: Object   }}

引用類型的props,我們可以在子組件中直接修改引用類型屬性的值(如:this.obj.id='3',會生效),但是不能直接改變引用類型存儲的地址值(如:this.obj = {id: '3'}),會發出警告。


雖然子組件可以直接修改父組件的狀態值,但我們不建議這樣做,我們希望所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父級 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父級組件的狀態,從而導致你的應用的數據流向難以理解。

(2)vue自定義事件:

方式1: 給子組件標簽綁定事件監聽

子組件向父組件的通信方式

功能類似于function props

通過在父組件中給子組件標簽綁定自定義事件的監聽,再由子組件觸發事件,實現子組件向父組件傳遞數據的方法,事件名必須一致,且不能有大寫字母,v-on 事件監聽器在 DOM 模板中會被自動轉換為全小寫 (因為 HTML 是大小寫不敏感的)

// 方式一: 通過v-on綁定<component @delete_todo="deleteTodo"/>// 方式二: 通過$on()綁定this.$refs.xxx.$on('delete_todo', function (todo) {this.deleteTodo(todo)})通過this.$emit('delete_todo', todo)觸發事件

不適合隔層組件和兄弟組件間的通信

方式2: 通過單獨的vm對象綁定監聽/分發事件

任意組件間通信(類似于pubsub)

創建一個公用的vm對象

import Vue from 'vue'export default new Vue()

在接收消息的組件,綁定監聽

import vm from './vm.js'mounted(){  vm.$on('delete_todo', function (todo) {		this.deleteTodo(todo)	})}

在發送消息的組件,觸發事件

vm.$emit('delete_todo', todo)

(3) 消息的訂閱和發布(pubsub)

適用于任何關系的組件間的通信
缺點:相對于vuex,管理不夠集中
用法:

引入pubsub-js庫
在接收消息的組件訂閱消息(subscribe)
在發送消息的組件發布消息 ( publish)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 新兴县| 田林县| 徐水县| 白朗县| 合阳县| 泉州市| 琼结县| 宜城市| 镇原县| 当涂县| 赫章县| 麻江县| 沅江市| 枣阳市| 金门县| 大田县| 武鸣县| 巴彦县| 交城县| 霍城县| 吉首市| 浦城县| 渭源县| 双鸭山市| 乌海市| 临沧市| 淮南市| 太康县| 囊谦县| 浮梁县| 鹤壁市| 芒康县| 天津市| 临海市| 淮北市| 秀山| 都匀市| 桦南县| 固原市| 义马市| 高邑县|