在 Vue 3 中,可以使用 ref 和 $refs 對子組件進(jìn)行訪問和操作。具體來說,$refs 是一個(gè)對象,包含了通過 ref 注冊的子組件以及其他 DOM 元素的引用。然而,需要注意的是,$refs 只在組件渲染完成后才能訪問,因此需要確保在組件渲染完成后才進(jìn)行引用。
下面的代碼演示了如何使用 ref 和 $refs 獲取子組件:
<template> <div> <child-component ref="child"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, mounted() { // 在子組件渲染完成后,可以通過 $refs 獲取子組件實(shí)例 const child = this.$refs.child; child.doSomething(); } } </script>
在上面的代碼中,我們定義了一個(gè)名為 ChildComponent 的子組件,并將它注冊到了當(dāng)前組件中。然后,在組件渲染完成后,我們使用 this.$refs.child 獲取了 ChildComponent 的實(shí)例,并調(diào)用了它的 doSomething 方法。
需要注意的是,ref 不僅可以用于注冊子組件,還可以用于注冊其他 DOM 元素。下面的例子演示了如何獲取一個(gè) input 元素的引用:
<template> <div> <input ref="myInput" type="text" /> </div> </template> <script> export default { mounted() { // 在元素渲染完成后,可以通過 $refs 獲取元素的引用 const input = this.$refs.myInput; input.focus(); } } </script>
在上面的代碼中,我們通過 ref 注冊了一個(gè)名為 myInput 的 input 元素,并在組件渲染完成后使用 this.$refs.myInput 獲取了該元素的引用,并調(diào)用了它的 focus 方法。