Yev*_*pak 10 javascript reactjs react-hooks
我正在尝试通过 id 获取元素。(这是重现错误的示例代码)
function MyComponent(){
const myId = useId();
useEffect(() => {
const myComponentDOMElement = document.querySelector(`#${myId}`); // error here
}
)
return <div id={ myId }> text </div>
}
Run Code Online (Sandbox Code Playgroud)
这段代码给出了一个错误:
Uncaught DOMException: Failed to execute 'querySelector' on 'Document': '#:Rt6m:' is not a valid selector.
Run Code Online (Sandbox Code Playgroud)
useRef 在我的情况下无法帮助我。如何使用 ID 来获取元素。
Eti*_*tin 20
React 生成的 IDuseId被冒号包围(例如:R1ab6km:),这些特殊字符由 解释querySelector。您可以使用CSS.escape()so that 按querySelector字面意思处理这些字符来转义它们。
document.querySelector(`#${CSS.escape(id)}`)
Run Code Online (Sandbox Code Playgroud)
我发现我可以使用属性选择器。
function MyComponent(){
const myId = useId();
useEffect(() => {
const myComponentDOMElement = document.querySelector(`[id="${myId}"]`); // this will work
}
)
return <div id={ myId }> text </div>
}
Run Code Online (Sandbox Code Playgroud)