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

圖片精選

主站蜘蛛池模板: 寻甸| 从江县| 宁远县| 河间市| 西乌珠穆沁旗| 盐津县| 顺平县| 民乐县| 义马市| 方山县| 正阳县| 永兴县| 黄陵县| 廊坊市| 武定县| 呼玛县| 昌都县| 南华县| 临沂市| 岗巴县| 濮阳县| 井研县| 桂阳县| 奉贤区| 盐亭县| 河北区| 二连浩特市| 涞源县| 长汀县| 通河县| 临湘市| 江永县| 东乡县| 洪泽县| 边坝县| 昂仁县| 洞头县| 霍邱县| 阳曲县| 来宾市| 浦城县|