3

我有一个简单的 Vue 组件,其根元素为ref="divRef". 但是,在onMounted函数中,divRef.value返回未定义。任何帮助将不胜感激。

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"
            )
        }
    }
})

4

2 回答 2

7

在您的render函数中,传递divRef自身,而不是字符串:

return h(
    "div",
    {
        //ref: "divRef"   // DON'T DO THIS
        ref: divRef
    },
    "This is a div"
)
于 2020-07-11T03:35:39.327 回答
4

divvalue如果您尝试访问"This is a div" ( 中的文本div ,元素默认情况下没有属性,您应该使用innerText如下属性:divRef.innerText.

更新

根据docs,您必须将 ref 本身作为返回元素中的 ref 传递才能$el在 Vue 3 中访问。所以您的代码应该是这样的:

return () => {
  return h(
    "div", {
      ref: divRef
    },
    "This is a div"
  )
}
于 2020-07-10T17:23:13.683 回答