javascript - 如何将 HTMLElement 转换为 JSX.Element

这里我有类似下面的 HTMLElement

<div id='hiddenDiv'>
  <div>foobar</div>
</div>

我正在做类似下面的事情,试图将它转换成 JSX.Element:

function renderMailCompose(): JSX.Element {
    const content = document.getElementById('hiddenDiv');
    return content;
}

但是我得到了错误

Type 'HTMLElement' is missing the following properties from type 'ReactElement<any, any>': type, props, key

我想知道如何将包含所有内容的 div 正确转换为 JSX.Element。任何帮助将不胜感激!

最佳答案

一般来说,除非你有使用getElementById的特定原因,否则我们通常想做的就是使用内置的useRef来将元素存储在变量中 Hook 。

所以你可以这样做-

const hiddenDivRef = useRef<HTMLDivElement>(null);

return (
  <div ref={hiddenDivRef}>
    <div>foobar</div>
  </div>
);

之后我们可以像这样访问值-

console.log(hiddenDivRef.current);

您还可以使用您通常拥有的所有相关功能,
即 - .focus() 等...

  • 注意:钩子(Hook)并不专用于存储元素。

https://stackoverflow.com/questions/70096826/

相关文章:

javascript - 按顺序播放多个音轨,而不是同时播放

python - 如何处理两个事件循环? Pyrogram 和 Tkinter 的

flutter - 错误 : Member not found: 'PlatformInterfac

python - Spyder 5.1.5 内核挂起,5.2.1 无法与 conda 一起使用

debugging - A/libc : Fatal signal 11 (SIGSEGV), 代码

python - "' str ' object has no attribute ' 将 slug

amazon-web-services - 如何查看 AWS 备份库的大小?

kotlin - 如何在 Kotlin Multiplatform 中获取特定于平台的换行符?

node.js - 如何解决错误 : Cannot find module 'express-rat

reactjs - 为什么我的 CSRF token 与 Laravel 和 Sanctum 不匹配