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

首頁 > 語言 > JavaScript > 正文

Vue 子組件與數(shù)據(jù)傳遞問題及注意事項(xiàng)

2024-05-06 15:37:00
字體:
供稿:網(wǎng)友

在面對(duì)單個(gè)組件邏輯復(fù)雜需要拆分時(shí),難免會(huì)遇到父子組件之間數(shù)據(jù)傳遞的問題。那么我們來了解一下在父子組件之間進(jìn)行數(shù)據(jù)傳遞時(shí)需要遵循哪些約定,以及要注意哪些問題。

如何傳遞

父組件向子組件在進(jìn)行傳遞時(shí),使用的是 prop 特性進(jìn)行傳遞。

約定

老規(guī)矩, 在使用前我們首先了解應(yīng)該怎么使用,有哪些約束條件:

子組件的 props 中定義要傳遞的變量名 變量名同組件的命名規(guī)范 父組件傳值時(shí),需要使用 短橫線分隔命名 使用 v-bind 進(jìn)行傳值

定義

首先在子組件中定義:

// Child.vue

export default {  name: 'child'  props: ['teamList']}

這里使用了 駝峰命名 ,在傳值時(shí)需注意要轉(zhuǎn)換成 短橫線分隔命名 。

我們定義了一個(gè) teamList 的變量,此時(shí)我們就可以在這個(gè)組件中通過 this 使用這個(gè)變量了(同 data 中的數(shù)據(jù))。

傳值

在父組件中進(jìn)行傳值:

<template>  <div>    <child v-bind:teamList="teamList"></child>  </div></template>

父組件中使用 v-bind 即可將數(shù)據(jù)傳遞下去了。

向子組件傳遞數(shù)據(jù)就是這么簡(jiǎn)單,本質(zhì)上和 data 一樣,只是這里單獨(dú)使用 prop 特性將其區(qū)分開來。

需要注意的時(shí):

通過 prop 特性傳遞下去的數(shù)組是 “單向”綁定的,父組件對(duì)數(shù)組的更新會(huì)影響到子組件。因此并不建議子組件對(duì) prop 特性中的值進(jìn)行修改

Js中在傳遞對(duì)象和數(shù)組時(shí)傳遞的時(shí)引用!因此:當(dāng)子組件修改父組件傳遞下來的對(duì)象/數(shù)組時(shí)會(huì)影響到父組件中的狀態(tài)

這個(gè)特性有利有弊,在某些情況下可以通過這種類似 hack 的方式來進(jìn)行處理。

子組件反向傳遞

上面說到了,并不建議在子組件中修改 props 中的數(shù)據(jù)。那么當(dāng)需要向父組件進(jìn)行某種 反饋 時(shí)怎么辦呢?

假設(shè)現(xiàn)在我們有一個(gè)登錄彈出框的組件,通過子組件的方式調(diào)用了,當(dāng)我們登錄成功時(shí)該如何 通知 父組件做出相應(yīng)的反應(yīng)呢?

    通過自定義事件,子組件調(diào)用 this.$emit('事件名', 參數(shù)) 使用 v-model 、組件中 model 選項(xiàng)與 input 事件模擬成 input 控件,對(duì)父組件中的值進(jìn)行更新 .sync 修飾符進(jìn)行 “雙向綁定”

這里只介紹第一種方式,因?yàn)楹髢煞N方式若羽也沒用過幾次 o(╯□╰)o

emit使用約定

事件名的命名規(guī)范同組件 父組件在綁定子組件上的自定義事件時(shí),必須 完全匹配 事件名,這里不像組件與子組件中使用時(shí)是使用的 短橫線分隔命名 ,而是 完全匹配 。

約定較少,主要注意使用時(shí)是和組件不同的,名稱需要完全匹配。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 晋江市| 石台县| 涿州市| 简阳市| 简阳市| 镇远县| 尉犁县| 临沧市| 阿坝县| 临海市| 宝丰县| 桐庐县| 潞城市| 尼玛县| 平和县| 大理市| 长乐市| 广元市| 唐山市| 新安县| 天全县| 木兰县| 浦县| 定西市| 得荣县| 北海市| 麻城市| 重庆市| 航空| 侯马市| 嫩江县| 阿合奇县| 晋中市| 方正县| 图片| 松原市| 噶尔县| 宜都市| 芷江| 依兰县| 池州市|