Vue 3 refs 在渲染函数中未定义
Vue 3 refs is undefined in render function
我有一个简单的 Vue 组件,根元素为 ref="divRef"
。但是,在 onMounted
函数中,divRef.value
returns 未定义。任何帮助将不胜感激。
import { defineComponent, onMounted, ref, Ref, h } from "vue"
export default defineComponent({
setup(props, context) {
const divRef = ref() as Ref<HTMLElement>
onMounted(() => {
console.log(divRef.value) // undefined
})
return () => {
return h(
"div",
{
ref: "divRef"
},
"This is a div"
)
}
}
})
如果您尝试访问 div
元素,默认情况下没有 value
属性 "This is a div"
(div
中的文本) 你应该像这样使用 innerText
属性: divRef.innerText
.
更新
根据 docs,您必须将 ref 本身作为 return 元素中的 ref 传递才能访问 Vue 3 中的 $el
。所以您的代码应该是像这样:
return () => {
return h(
"div", {
ref: divRef
},
"This is a div"
)
}
在您的 render
函数中,传递 divRef
本身,而不是字符串:
return h(
"div",
{
//ref: "divRef" // DON'T DO THIS
ref: divRef
},
"This is a div"
)
如果您在渲染函数中使用 jsx。您还需要传递 divRef
本身,不能通过字符串传递。
set() {
const divRef = ref() as Ref<HTMLElement>
return () => <div ref={divRef}></div>
}
我有一个简单的 Vue 组件,根元素为 ref="divRef"
。但是,在 onMounted
函数中,divRef.value
returns 未定义。任何帮助将不胜感激。
import { defineComponent, onMounted, ref, Ref, h } from "vue"
export default defineComponent({
setup(props, context) {
const divRef = ref() as Ref<HTMLElement>
onMounted(() => {
console.log(divRef.value) // undefined
})
return () => {
return h(
"div",
{
ref: "divRef"
},
"This is a div"
)
}
}
})
div
元素,默认情况下没有 value
属性 "This is a div"
(div
中的文本) 你应该像这样使用 innerText
属性: divRef.innerText
.
更新
根据 docs,您必须将 ref 本身作为 return 元素中的 ref 传递才能访问 Vue 3 中的 $el
。所以您的代码应该是像这样:
return () => {
return h(
"div", {
ref: divRef
},
"This is a div"
)
}
在您的 render
函数中,传递 divRef
本身,而不是字符串:
return h(
"div",
{
//ref: "divRef" // DON'T DO THIS
ref: divRef
},
"This is a div"
)
如果您在渲染函数中使用 jsx。您还需要传递 divRef
本身,不能通过字符串传递。
set() {
const divRef = ref() as Ref<HTMLElement>
return () => <div ref={divRef}></div>
}