国产探花免费观看_亚洲丰满少妇自慰呻吟_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)

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

圖片精選

主站蜘蛛池模板: 呼和浩特市| 万宁市| 横峰县| 岚皋县| 东乡族自治县| 北川| 荣昌县| 清远市| 黄梅县| 新安县| 永城市| 濉溪县| 英超| 高要市| 阳信县| 时尚| 花垣县| 甘南县| 柳州市| 绥化市| 菏泽市| 江西省| 鄢陵县| 健康| 两当县| 玛纳斯县| 杭锦旗| 孝感市| 麻阳| 额尔古纳市| 昌图县| 萨嘎县| 府谷县| 遂宁市| 东光县| 眉山市| 虹口区| 泰和县| 桂平市| 肇东市| 南召县|