在vue2.x
中,可以通過給元素添加ref='xxx'
屬性,然后在代碼中通過this.$refs.xxx
獲取到對應的元素
然而在vue3
中時沒有$refs
這個東西的,因此vue3
中通過ref
屬性獲取元素就不能按照vue2
的方式來獲取
vue3
需要借助生命周期方法,原因很簡單,在setup
執行時,template
中的元素還沒掛載到頁面上,所以必須在mounted
之后才能獲取到元素。
<template>
<h2>App2</h2>
<input type="text">---
<input type="text" ref="inputRef">
</template>
<script>
import { onMounted, ref } from 'vue'
/*
ref獲取元素: 利用ref函數獲取組件中的標簽元素
功能需求: 讓輸入框自動獲取焦點
*/
export default {
setup() {
const inputRef = ref(null)
onMounted(() => {
console.log(inputRef.value)
inputRef.value && inputRef.value.focus()
})
return {
inputRef
}
},
}
</script>
如上代碼,
當界面掛載出來的時候,就會自動執行
vue3
中,所有生命周期方法都抽離出去了,需要用時直接
import
。這里導入了一個
onMounted
當界面掛載出來的時候,就會自動執行
onMounted
的回調函數,里頭就可以獲取到dom元素
pc上是可以正常輸出的

用於
父組件調用子組件的方法(是起作用的)
查看:
https://www.cnblogs.com/yuzhongyu/p/14076777.html