如何在反应中使用带有样式组件的 document.getElementById()?

Posted

技术标签:

【中文标题】如何在反应中使用带有样式组件的 document.getElementById()?【英文标题】:How to use document.getElementById() with styled components in react? 【发布时间】:2021-09-21 08:21:44 【问题描述】:

我想在我的 react 项目中使用像 document.getElementById() 这样的 JS 函数。我是样式化组件的新手,不知道如何将这些功能与它们一起使用。 不要参考官方的'styled-components'页面,我已经看过了。

【问题讨论】:

元素有ID吗?如果是这样,你可以使用它 我知道 id 参数,但我应该把这个语句放在哪里?那是里面react函数return()还是外面? 元素创建后? 【参考方案1】:

您可以为此使用useRef react Hook。

const reqElement = React.useRef(null);

现在,您可以在所需元素中添加ref=reqElement

之后你可以使用reqElement.current 来做那些你可以在javascript 中通过document.getElementById() 做的事情。

useRef hook refrence

【讨论】:

这真的很有帮助,我终于解决了我的问题。谢谢。 当你想在 React 中保持对元素的引用时,这是正确的方法【参考方案2】:

我终于在这里找到了我的问题的答案。我将收集到的信息分为以下几点。

    样式化组件确实有一个 id 参数,但我们不得在 react 中使用它来实现 DOM 功能,因为 react 背后的主要动机是防止真实 DOM 中的频繁更改。 我们可以在 React 功能组件中使用 useRef() 钩子在 React 中传递引用。 (请看上面 Dibas 的回答。) 我犯了一个错误,没有使用 useState() 挂钩来存储组件的状态,而是使用了标识符,这是错误的,因为 useState 有助于每当状态改变时重新渲染组件。 在 useEffect() 挂钩中使用清理函数来防止内存泄漏。

这里是视差效果视频https://youtu.be/Q5y6pwoE3cM的链接,希望对您有所帮助。

【讨论】:

以上是关于如何在反应中使用带有样式组件的 document.getElementById()?的主要内容,如果未能解决你的问题,请参考以下文章

如何在材质 UI 的反应中使用排版作为样式化组件

如何使用 styled-components 更改其他组件中单个组件的样式?

如何在反应、样式化的组件中使用字体真棒图标更改单选按钮的颜色

带有样式组件的 Nextjs 不通过主题

如何对子反应组件进行 css 样式设置?

如何在 Typescript 中正确使用 React.lazy() 来导入带有泛型类型参数的反应组件?