Vue 的 refs 是一個非常方便的功能,可以幫助開發者通過一個預設的 ref 名稱來獲取某個特定的子組件或元素。在應用程序開發中,這種方法經常被用來處理 DOM,以及在某些情況下直接與子組件進行通信。
<template> <div ref="myDiv"></div> </template> <script> export default { mounted() { console.log(this.$refs.myDiv); } } </script>
在上面的例子中,我們可以看到在組件的標記中使用了一個 ref,然后在組件被掛載(mounted)后,我們可以通過 this.$refs 來訪問該元素。此時,myDiv 的值就是該元素的引用。
但是,在實戰開發中,我們往往需要使用 refs 來獲取子組件的引用,而不是元素。這種情況下,我們需要用到 Vue 的 $children 屬性。
<template> <child-component ref="myChild"></child-component> </template> <script> import ChildComponent from './components/ChildComponent.vue'; export default { components: { ChildComponent }, mounted() { console.log(this.$children[0]); } } </script>
上面的例子中,我們可以看到在標記中使用了一個名為“myChild”的 ref,然后在組件被掛載后,我們可以通過 this.$children[0] 來訪問該子組件。此時,myChild 的值就是該子組件的引用。
在動態使用 refs 的時候,我們可以使用 $refs 來創建一個對象,然后將多個 ref 綁定到該對象上:
<template> <div v-for="(item, index) in itemList" :ref="$set(itemsRefs, index, 'item_'+index)"></div> </template> <script> export default { data() { return { itemsRefs: {}, itemList: [1, 2, 3] } }, mounted() { console.log(this.itemsRefs); } } </script>
在這個代碼段中,我們可以看到如何動態地設置 ref 來創建一個名稱為 itemsRefs 的對象。使用 $set 來動態地添加一個叫做 “item_index” 的 ref 名稱,這樣就可以使用 this.itemsRefs 訪問到所有的引用了。
上一篇hive 解json
下一篇vue key 作用