當(dāng)我們?cè)谑褂肰ue進(jìn)行開發(fā)時(shí),經(jīng)常會(huì)涉及到向組件傳遞數(shù)據(jù)的問(wèn)題。有時(shí)候我們需要從父組件中獲取子組件的數(shù)據(jù),這時(shí)候就需要用到Vue獲取子data的方法。下面我們一起來(lái)詳細(xì)了解一下如何實(shí)現(xiàn)。
<template> <div> <child-component :childData="data"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, data () { return { data: 'hello' } } } </script>
首先,我們需要在父組件中引入子組件并使用它。我們可以在父組件的模板中傳遞數(shù)據(jù)到子組件,并在子組件中通過(guò)props來(lái)接收數(shù)據(jù)。這樣的話,我們就可以在子組件中使用父組件的數(shù)據(jù)。在上述示例代碼中,我們通過(guò)v-bind指令向子組件傳遞了一個(gè)名為childData的props,它的值為父組件中的data。
<template> <div> <p>{{ childData }}</p> <button @click="changeChildData">change child data</button> </div> </template> <script> export default { props: ['childData'], methods: { changeChildData () { this.childData = 'world' } } } </script>
接下來(lái),我們需要在子組件中通過(guò)props來(lái)接收父組件傳遞的數(shù)據(jù)。在子組件中我們可以通過(guò)在props中設(shè)置值來(lái)接收父組件中的數(shù)據(jù)。在上述示例代碼中,我們?cè)O(shè)置了一個(gè)名為childData的props,它的值為父組件傳遞的data。我們?cè)谧咏M件中將childData插入了一個(gè)p標(biāo)簽中并通過(guò)按鈕點(diǎn)擊事件來(lái)更改childData的值,以便我們了解如何從父組件中獲取子組件的數(shù)據(jù)。
<template> <div> <child-component ref="child"></child-component> <button @click="getChildData">get child data</button> </div> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, methods: { getChildData () { console.log(this.$refs.child.childData) } } } </script>
最后,我們需要在父組件中使用$refs來(lái)獲取子組件中的數(shù)據(jù)。首先,在父組件的模板中,我們使用子組件并設(shè)置了一個(gè)ref="child"。這樣我們就能在父組件的腳本中通過(guò)this.$refs.child來(lái)獲取子組件的實(shí)例。然后,我們就可以通過(guò)this.$refs.child.childData來(lái)獲取子組件中我們需要的數(shù)據(jù)了。在上述示例代碼中,我們通過(guò)按鈕點(diǎn)擊事件來(lái)調(diào)用父組件的方法getChildData,并在其中使用console.log輸出了子組件中的childData值。