下面我們來介紹一個關于 Vue 父子通信的案例,首先在父組件中,我們可以定義一個 data 屬性來保存傳遞給子組件的數據:
data() { return { message: '這是來自父組件的消息' } }
通過在子組件上使用 props 來接收父組件傳遞的數據,可以在子組件中使用 props 訪問傳遞過來的數據:
props: { message: String }
在子組件中,我們可以使用數據綁定來展示父組件傳遞過來的消息:
{{message}}
如果需要在子組件中修改父組件傳遞過來的數據,我們可以在子組件中使用 $emit 來觸發一個事件,將要修改的數據傳遞給父組件,父組件再通過事件監聽來接收子組件的修改:
methods: { modify() { this.$emit('modify-message', '這是來自子組件的修改') } }
在父組件中,我們可以使用 v-on 指令來監聽子組件觸發的事件,并在回調函數中修改父組件的數據:
methods: { modifyMessage(newMessage) { this.message = newMessage } }
如果子組件需要在父組件渲染完成后才進行一些操作,我們可以在子組件中使用 $emit 來觸發一個事件,表示子組件已經渲染完畢,在父組件中使用 ref 來獲取子組件的實例,然后在父組件的 mounted 鉤子函數中監聽子組件觸發的事件:
mounted() { this.$refs.child.$emit('child-rendered') }methods: { childRendered() { console.log('子組件已經渲染完畢') } }
如果我們需要在子組件中使用父組件的方法,我們也可以通過 props 將父組件的方法傳遞給子組件,在子組件中調用:
props: { fn: Function }
以上是關于 Vue 父子通信的一個案例,通過這些方法,我們可以實現跨組件的數據傳遞和方法調用。
上一篇vue父子組件渲染