vue 父組件通過$refs獲取子組件的值和方法詳解
前言
在vue項目中組件之間的通訊是很常見的問題,同時也是很重要的問題,我們大致可以將其分為三種情況:
父傳子:在父組件中綁定值,在子組件中用props接收
子傳父:在父組件中監(jiān)聽一個事件,在子組件中利用$emit觸發(fā)這個事件并帶上數(shù)據(jù)作為第二個參數(shù),這時父組件中監(jiān)聽事件的回調(diào)函數(shù)就會被調(diào)用,回調(diào)函數(shù)的參數(shù)就是子組件帶上來的數(shù)據(jù),這樣就可以在父組件中使用子組件的數(shù)據(jù)了,
兄弟之間的傳遞:我們可以使用事件總線(eventBus)來輕松的解決,其實就是發(fā)布訂閱者模式
今天我們要看的是父組件如何直接調(diào)取子組件的數(shù)據(jù)和方法,而不是通過子組件傳上來的
在這里我們要理解父組件直接拿事件是在父組件上,子組件傳上來數(shù)據(jù),事件是在子組件上,是完全不同的兩種情況
代碼展示
子組件 children.vue,我們在子組件中定義了數(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 // 父組件可以通過$refs拿到子組件的對象 // 然后直接調(diào)用子組件的 methods里的方法和data里的數(shù)據(jù) console.log(chil) //子組件對象 console.log(chil.sonData) // 我是子組件的數(shù)據(jù) console.log(chil.sonMethod()) // 我是子組件的方法 } } } </script>
注意事項
因為 ref 本身是作為渲染結(jié)果被創(chuàng)建的,在初始渲染的時候你不能訪問它們 - 它們還不存在!,所以它不是響應式的,不能用在模板或者計算屬性中。
以上這篇vue 父組件通過$refs獲取子組件的值和方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue axios全局攔截 get請求、post請求、配置請求的實例代碼
這篇文章主要介紹了Vue axios全局攔截 get請求、post請求、配置請求的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11vue中get方法\post方法如何傳遞數(shù)組參數(shù)詳解
在前后端交互的時候,有時候需要通過get或者delete傳遞一個數(shù)組給后臺,下面下面這篇文章主要給大家介紹了關于vue中get方法\post方法如何傳遞數(shù)組參數(shù),文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-03-03vue 查看dist文件里的結(jié)構(gòu)(多種方式)
本文通過三種方式給大家介紹了vue 查看dist文件里的結(jié)構(gòu),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01解決vue中修改export default中腳本報一大堆錯的問題
今天小編就為大家分享一篇解決vue中修改export default中腳本報一大堆錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Vue2中無法監(jiān)聽數(shù)組和對象的某些變化問題
這篇文章主要介紹了Vue2中無法監(jiān)聽數(shù)組和對象的某些變化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08