vue 父組件通過(guò)$refs獲取子組件的值和方法詳解
前言
在vue項(xiàng)目中組件之間的通訊是很常見(jiàn)的問(wèn)題,同時(shí)也是很重要的問(wèn)題,我們大致可以將其分為三種情況:
父?jìng)髯樱?/strong>在父組件中綁定值,在子組件中用props接收
子傳父:在父組件中監(jiān)聽(tīng)一個(gè)事件,在子組件中利用$emit觸發(fā)這個(gè)事件并帶上數(shù)據(jù)作為第二個(gè)參數(shù),這時(shí)父組件中監(jiān)聽(tīng)事件的回調(diào)函數(shù)就會(huì)被調(diào)用,回調(diào)函數(shù)的參數(shù)就是子組件帶上來(lái)的數(shù)據(jù),這樣就可以在父組件中使用子組件的數(shù)據(jù)了,
兄弟之間的傳遞:我們可以使用事件總線(eventBus)來(lái)輕松的解決,其實(shí)就是發(fā)布訂閱者模式
今天我們要看的是父組件如何直接調(diào)取子組件的數(shù)據(jù)和方法,而不是通過(guò)子組件傳上來(lái)的
在這里我們要理解父組件直接拿事件是在父組件上,子組件傳上來(lái)數(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>
<h1 @click="onclick">父組件</h1>
</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
// 父組件可以通過(guò)$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í)候你不能訪問(wèn)它們 - 它們還不存在!,所以它不是響應(yīng)式的,不能用在模板或者計(jì)算屬性中。
以上這篇vue 父組件通過(guò)$refs獲取子組件的值和方法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決vue里a標(biāo)簽值解析變量,跳轉(zhuǎn)頁(yè)面,前面加默認(rèn)域名端口的問(wèn)題
這篇文章主要介紹了解決vue里a標(biāo)簽值解析變量,跳轉(zhuǎn)頁(yè)面,前面加默認(rèn)域名端口的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue3中使用Apache?ECharts的詳細(xì)方法
最近在做一些數(shù)據(jù)透析的項(xiàng)目需要用到報(bào)表圖,那么報(bào)表圖好用的有老牌的ECharts,比較新意的AntV,思前馬后的想了一下還是用了Echarts,這篇文章主要介紹了vue3中使用Apache?ECharts,需要的朋友可以參考下2022-11-11
vue.js基于v-for實(shí)現(xiàn)批量渲染 Json數(shù)組對(duì)象列表數(shù)據(jù)示例
這篇文章主要介紹了vue.js基于v-for實(shí)現(xiàn)批量渲染 Json數(shù)組對(duì)象列表數(shù)據(jù),結(jié)合實(shí)例形式分析了vue.js使用v-for遍歷json格式數(shù)據(jù)渲染列表相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Vue props實(shí)現(xiàn)父組件給子組件傳遞數(shù)據(jù)的方式
Vue中的配置項(xiàng)Props能讓組件接收外部傳遞過(guò)來(lái)的數(shù)據(jù),本文給大家介紹了Vue props實(shí)現(xiàn)父組件給子組件傳遞數(shù)據(jù)的幾種方式,文中有詳細(xì)的實(shí)現(xiàn)方式,具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10
VUEJS實(shí)戰(zhàn)之修復(fù)錯(cuò)誤并且美化時(shí)間(2)
這篇文章主要為大家詳細(xì)介紹了VUEJS實(shí)戰(zhàn)之修復(fù)錯(cuò)誤并且美化時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
VUE+Element-ui實(shí)戰(zhàn)之使用el-calendar日歷自定義顯示內(nèi)容
這篇文章主要介紹了VUE+Element-ui實(shí)戰(zhàn)之使用el-calendar日歷自定義顯示內(nèi)容方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

