当我点击一个按钮时,会显示模式.模式包含一个输入字段.我想在点击后显示模式时,将焦点设置为模式内的输入字段.

这是按钮,所以当我点击它时,模态显示,

<div 
    class="manu-bar-card"
    @click="
       () => {
         groupHandler.addNewgroupModal = true;
         newGroupName.focus();
    }"
 >

这是我的模式(如果groupHandler.addNewgroupModaltrue,这将显示),

<div class="modal-container" v-if="groupHandler.addNewgroupModal">
 <input
        ref="newGroupName"
        type="text"
    />
</div>

这是模式内的输入字段,我为其设置了一个ref属性,

<input
    ref="newGroupName"
    type="text"
/>

我已经在我的<script setup>和react 对象中注册了该ref,以显示/隐藏模态,

const newGroupName = ref();
const groupHandler = reactive({
  addNewgroupModal: false,
});

我认为不关注输入字段的原因是调用focus方法时,modal尚未安装.如何处理这样的事情.如果有人能帮忙,我将不胜感激.谢谢

推荐答案

模态应该是一个单独的组件.

让我们称之为<Modal v-if="groupHandler.addNewgroupModal" />

Modal组件中,您可以为输入创建ref,在onMounted函数中,您可以调用newGroupName.value.focus()

如果出于某种原因不想将模态分解为saperate组件.

你可以用nextTick

<div 
    class="manu-bar-card"
    @click="clickHandler"
 >

setup个 playbook 中.

<div 
    class="manu-bar-card"
    @click="
       () => {
         groupHandler.addNewgroupModal = true;
         newGroupName.focus();
    }"
 >

在你的setup个 playbook 中.

import { nextTick } from 'vue'

const clickHandler = async () => {
  groupHandler.addNewgroupModal = true;
  await nextTick()
  newGroupName.value.focus();
}

Javascript相关问答推荐

获取最接近的父项(即自定义元素)

具有相同参数的JS类

从PWA中的内部存储读取文件

我开始使用/url?q=使用Cheerio

如何在Angular中插入动态组件

. NET中Unix时间转换为日期时间的奇怪行为

从WooCommerce Checkout Country字段重新排序国家,保持国家同步

如何从一个列表中创建一个2列的表?

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

为什么我的getAsFile()方法返回空?

当输入字段无效时,我的应用程序不会返回错误

Webpack在导入前混淆文件名

在Odoo中如何以编程方式在POS中添加产品

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

重新呈现-react -筛选数据过多

使用createBrowserRoutVS BrowserRouter的Reaction路由

rxjs在每次迭代后更新数组的可观察值

Chrome上的印度时区名S有问题吗?

我们是否可以在reactjs中创建多个同名的路由

在使用JavaScript以HTML格式显示Google Drive中的图像时遇到问题