Vue3入门指北(十二)模板引用

简介: Vue3入门指北(十二)模板引用

前言


虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作,但在某些情况下,我们仍然需要直接访问底层 DOM 元素。要实现这一点,我们可以使用特殊的 ref attribute:


<input ref="input">
复制代码


在我们日常的开发中,可能在某些情况下,我们需要直接访问DOM的底层元素,这个时候我们就可以通过ref属性来完成该操作:


<input ref="input">
复制代码


通过ref我们可以直接在组件实例挂载之后拿到它的引用,有些情况他可能很有用。


使用模板引用


如何我们是通过组合式API的方式,获取引用的话,需要声明一个同名的ref,通过声明的ref来对他进行使用:


<script setup>
import { ref, onMounted } from 'vue'
const input = ref(null)
onMounted(() => {
  input.value.focus()
})
</script>
<template>
  <input ref="input" />
</template>
复制代码


只有在组件挂载之后,才能使用模板引用。还要注意一点的时候,因为该元素还未创建,初次渲染时为null。所以在模板中使用的话要考虑到这种情况。


v-for与模板引用


当我们的v-for与模板引用作用在一个节点时,ref中存放的将会是一个数组


<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>
复制代码


ref中存放的数据顺序不一定会和源数组顺序一致


函数模板引用


除了上面使用字符串作为模板引用名字外,ref还支持动态绑定一个函数。该函数的第一个参数为元素引用。


<input :ref="(el) => { /* 可以将 el 赋值给一个ref 变量 */ }">
复制代码


当绑定的DOM元素被卸载时,绑定的函数也会被调用一次,不过拿到的参数值会是null

相关文章
|
10天前
|
JavaScript
vue学习(3)模板语法
vue学习(3)模板语法
44 11
|
8天前
|
JavaScript
Vue3中路由跳转的语法
Vue3中路由跳转的语法
111 58
|
11天前
|
前端开发
vue3+ts项目中使用mockjs
vue3+ts项目中使用mockjs
216 58
|
1天前
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
|
7天前
|
JavaScript 索引
Vue 2和Vue 3的区别以及实现原理
Vue 2 的响应式系统通过Object.defineProperty来实现,它为对象的每个属性添加 getter 和 setter,以便追踪依赖并响应数据变化。
22 9
|
8天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
9天前
|
JavaScript 开发者
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
彻底搞懂 Vue3 中 watch 和 watchEffect是用法
|
15天前
|
JavaScript API
如何使用Vue3的可计算属性
【9月更文挑战第5天】如何使用Vue3的可计算属性
44 13
|
6天前
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
11 1
|
7天前
|
JavaScript
Vue3 : ref 与 reactive
Vue3 : ref 与 reactive
9 1