Vue3如何動態(tài)設(shè)置ref
更新時間:2024年12月26日 08:56:52 作者:-小龍人
文章介紹了在某些場景下,需要根據(jù)動態(tài)數(shù)據(jù)來設(shè)置ref,例如在表格中的輸入框需要聚焦時,需要為每個輸入框設(shè)置一個ref,通過點擊編輯按鈕,可以自動聚焦到相應(yīng)的輸入框中
Vue3動態(tài)設(shè)置ref
介紹
在一些場景,ref設(shè)置是未知的需要根據(jù)動態(tài)數(shù)據(jù)來決定,如表格中的input框需要我們主動聚焦,就需要給每一個input設(shè)置一個ref,進而進行聚焦操作。
Demo
點擊下面截圖中的編輯按鈕,自動聚焦到相應(yīng)的輸入框中。

<template>
<!-- 動態(tài)ref -->
<div class="test_ref">
<div v-for="item in 9" :key="item">
<span>{{ item }}</span>
<!-- 動態(tài)設(shè)置ref -->
<el-input
v-model="inputVal"
placeholder="Please input"
:ref="(el:refItem) => handleSetInputMap(el, item)"
/>
<el-button type="primary" :icon="Edit" @click="handleEdit(item)" />
</div>
</div>
</template><script lang="ts" setup>
import { ref } from "vue";
import { Edit } from "@element-plus/icons-vue";
import { ComponentPublicInstance } from "vue";
type refItem = Element | ComponentPublicInstance | null;
const inputVal = ref();
const inputRefMap = ref({});
/** 編輯 */
const handleEdit = (item: number) => {
// 若輸入框此時還沒有渲染出來,如先隱藏再觸發(fā)顯示 需要使用nextTick進行聚焦
inputRefMap.value[`Input_Ref_${item}`].input.focus();
};
/** 動態(tài)設(shè)置Input Ref */
const handleSetInputMap = (el: refItem, item: number) => {
if (el) {
inputRefMap.value[`Input_Ref_${item}`] = el;
}
};
</script><style lang="scss" scoped>
.test_ref {
padding: 50px;
> div {
width: 300px;
margin: 0 auto;
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
margin-bottom: 10px;
}
}
</style>效果

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端vue面試總問watch和computed區(qū)別及建議總結(jié)
在現(xiàn)代前端的面試中,vue和react是面試過程中基本必問的技術(shù)棧,其中Vue響應(yīng)式話題,watch和computed是面試官非常喜歡聊的主題,雖然watch和computed它們都用于監(jiān)聽數(shù)據(jù)的變化,但它們在實現(xiàn)原理、使用場景和行為上有著顯著的區(qū)別,本文將深入探討,并提供一些面試過程中的建議2023-10-10
vue 點擊按鈕實現(xiàn)動態(tài)掛載子組件的方法
今天小編就為大家分享一篇vue 點擊按鈕實現(xiàn)動態(tài)掛載子組件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue?Baidu?Map之自定義點圖標(biāo)bm-marker的示例
這篇文章主要介紹了Vue?Baidu?Map之自定義點圖標(biāo)bm-marker,文中給大家介紹了vue-baidu-api地圖標(biāo)記點(自定義標(biāo)記圖標(biāo)),設(shè)置標(biāo)記點的優(yōu)先級問題,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
vue+jquery+lodash實現(xiàn)滑動時頂部懸浮固定效果
這篇文章主要為大家詳細(xì)介紹了vue+jquery+lodash實現(xiàn)滑動時頂部懸浮固定效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04

