【发布时间】:2021-08-01 22:54:06
【问题描述】:
我有一个简单的组件,它包含文本区域。我还有另一个简单的组件,它呈现一个按钮。单击按钮时,我想将焦点设置到文本区域。
这个简化的例子失败了:
<template>
<MyCommand @resize="testResize" />
<TextArea ref="refElement" />
</template>
<script lang="ts">
// ...
export default defineComponent({
name: 'SimpleComponent',
setup(props, context) {
const refElement = ref<HTMLElement | null>(null)
const testResize = () => {
console.log('resize test')
if (refElement.value !== null) {
refElement.value.focus()
}
}
return {
refElement,
testResize,
}
}
</script>
TextArea 是一个很简单的组件,一些输入规范化,过于简单了:
<template>
<textarea v-model.trim="value" />
</template>
我在控制台中得到“resize test”,所以 testResize 方法正在运行,但 refElement 为空。
【问题讨论】:
-
可能是
TextArea的问题,您使用的是哪个库?看看如何将 ref 传递给TextArea -
@Naren 没有库,只是简单的组件,用于包装 textarea 输入并进行一些输入规范化。你是对的 - 当我尝试使用简单的 textarea 而不是组件时,它可以工作。任何提示如何在组件内引用包装的输入?
标签: vue-component vuejs3 ref