溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue中父組件如何通過$refs獲取子組件的值

發(fā)布時(shí)間:2021-05-11 14:42:10 來源:億速云 閱讀:257 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)vue中父組件如何通過$refs獲取子組件的值的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

vue是什么

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫只關(guān)注視圖層,方便與第三方庫和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)復(fù)雜的單頁應(yīng)用。

前言

在vue項(xiàng)目中組件之間的通訊是很常見的問題,同時(shí)也是很重要的問題,我們大致可以將其分為三種情況:

父?jìng)髯樱?/strong>在父組件中綁定值,在子組件中用props接收

子傳父:在父組件中監(jiān)聽一個(gè)事件,在子組件中利用$emit觸發(fā)這個(gè)事件并帶上數(shù)據(jù)作為第二個(gè)參數(shù),這時(shí)父組件中監(jiān)聽事件的回調(diào)函數(shù)就會(huì)被調(diào)用,回調(diào)函數(shù)的參數(shù)就是子組件帶上來的數(shù)據(jù),這樣就可以在父組件中使用子組件的數(shù)據(jù)了,

兄弟之間的傳遞:我們可以使用事件總線(eventBus)來輕松的解決,其實(shí)就是發(fā)布訂閱者模式

今天我們要看的是父組件如何直接調(diào)取子組件的數(shù)據(jù)和方法,而不是通過子組件傳上來的

在這里我們要理解父組件直接拿事件是在父組件上,子組件傳上來數(shù)據(jù),事件是在子組件上,是完全不同的兩種情況

代碼展示

子組件 children.vue,我們?cè)谧咏M件中定義了數(shù)據(jù)sonData和方法sonMethod

// children.vue

<template>
 <div>我是 children</div>
</template>

<script>
export default {
 data: () => ({
  sonData: '我是子組件的數(shù)據(jù)!'
 }),
 methods: {
  sonMethod() {
   console.log('我是子組件的方法!')
  }
 },
 computed: {
  
 },
 created() {

 }
}
</script>

父組件 文件

// 父組件

<template>
 <div>
  <children ref='ch'>
  </children>
  <h2 @click="onclick">父組件</h2>
 </div>
</template>

<script>
import children from './coms/children'
export default {
 data() {
  return {}
 },
 components: {
  children
 },
 methods: {
  onclick() {
  // 或者 let chil = this.$refs['ch']
   let chil = this.$refs.ch

  // 父組件可以通過$refs拿到子組件的對(duì)象
  // 然后直接調(diào)用子組件的 methods里的方法和data里的數(shù)據(jù)
   console.log(chil) //子組件對(duì)象
   console.log(chil.sonData) // 我是子組件的數(shù)據(jù)
   console.log(chil.sonMethod()) // 我是子組件的方法
  }
 }
}
</script>

注意事項(xiàng)

因?yàn)?ref 本身是作為渲染結(jié)果被創(chuàng)建的,在初始渲染的時(shí)候你不能訪問它們 - 它們還不存在!,所以它不是響應(yīng)式的,不能用在模板或者計(jì)算屬性中。

感謝各位的閱讀!關(guān)于“vue中父組件如何通過$refs獲取子組件的值”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI