javascript - 在 React 中使用 querySelector
问题描述
querySelector
返回null
(可能是因为未创建元素),我尝试了事件DOMContentLoaded
和ReactDOM.findDOMNode
const Header = () => {
const links = document.querySelector('.header_links')
window.addEventListener('resize',() => {
if(window.innerWidth <=1000 ){
links.classList.remove('hide');
}
})
return (
<header className="App-header">
<div className="inner-header">
<div className="header_links">
<div className="header_left_links">
<a href="index.html" className="active">DrukBox</a>
<a href="printfile.html">Print File</a>
<a href="history.html">History</a>
<a href="addpages.html">Add pages</a>
</div>
<div className="header_right_links">
<a href="/">Sign in</a>
</div>
</div>
<BurgerMenu />
</div>
</header>
);
}
解决方案
或者你可以使用没有引用的状态。
const Header = () => {
const [isHiddenLinks, setIsHiddenLink] = React.useState(true);
React.useEffect(() => {
const handleResize = () => {
if (window.innerWidth <= 1000) {
setIsHiddenLink(false);
}
};
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
};
}, [isHiddenLinks]);
return (
<header className="App-header">
<div className="inner-header">
<div className={`header_links ${isHiddenLinks ? "hide" : ""}`}>
<div className="header_left_links">
<a href="index.html" className="active">
DrukBox
</a>
<a href="printfile.html">Print File</a>
<a href="history.html">History</a>
<a href="addpages.html">Add pages</a>
</div>
<div className="header_right_links">
<a href="/">Sign in</a>
</div>
</div>
<BurgerMenu />
</div>
</header>
);
};
推荐阅读
- svg.js - 在 SVG 中将文本居中
- java - 从 HTML 中解析信息以找出选定的选项
- r - 如何根据其他列的值在 data.table 中创建新列
- amazon-web-services - 如何使用 S3 作为 Maven 存储库?
- docker - phpmyadmin 在 docker 容器中找不到 404
- c# - 在 Xamarin 中导入联系人 - 电子邮件返回 null
- arrays - 在 Angular HTML 模板中渲染嵌套对象数组的最后一个元素
- matlab - 如何解压 12 位“Mono12Packed”号码
- sql-server - 我在 SQL Server 中运行脚本并得到“将数据类型 varchar 转换为数字时出错。”
- sql-server - macOS Catalina 上的 RODBC