Han

Life is a gift, we should celebrate it. We have to dance to show how grateful we are to be alive.

0%

VUE3模版引用

VUE 3 模版引用

官方文档链接

注意点:

  • 只有在生命周期内,才能拿到模版,也就是在onMounted函数调用之后。(你只可以在组件挂载后才能访问模板引用。如果你想在模板中的表达式上访问 input,在初次渲染时会是 null。这是因为在初次渲染前这个元素还不存在呢!)

  • 引用的value取值,否则为undefined。

    1
    2
    3
    4
    5
    6
    7
    8
    //监听input变化
    watchEffect(() => {
    if (input.value) {
    input.value.focus()
    } else {
    // 此时还未挂载,或此元素已经被卸载(例如通过 v-if 控制)
    }
    })

组合式API

需要声明一个同名的ref

选项式API

挂载到 this.$refs.input上

v-for

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script setup>
import { ref, onMounted } from 'vue'

const list = ref([
/* ... */
])

const itemRefs = ref([])

onMounted(() => console.log(itemRefs.value))
</script>

<template>
<ul>
<li v-for="item in list" ref="itemRefs">
{{ item }}
</li>
</ul>
</template>