javascript - 如何在反应组件中添加和删除类名?
问题描述
我想使用 React 钩子来实现这样的东西:
const header = document.querySelector(".nav-header");
function stickyHeader() {
if (window.pageYOffset > 600) {
header.classList.remove("header");
} else {
header.classList.add("header");
}
}
window.addEventListener("scroll", () => {
stickyHeader();
});
以上是我在 vanilla js 中操作 DOM 的方式。我想对 react 中的组件做同样的事情。
解决方案
可能尝试一个 getClassName 方法,该方法在每次渲染时返回一个连接的类数组
对于功能组件
const getClassName = () => {
let classes = ["nav"];
if (window.pageYOffset > 600) {
classes.push("header");
}
//more conditions if required
return classes.join(" ");
//returns "nav header" || "nav"
}
然后在你的组件返回方法中
return (
<div className={getClassName()}><div>
)
推荐阅读
- c++ - 如何以编程方式获取相对功耗?
- mongodb - 直接备份mongodb到远程服务器
- java - 错误:方法不会覆盖java中的错误
- regex - 更新长字符串中的一系列数值
- r - 如何在 dplyr 中进行向量/行求和(逐个元素)?
- python - 如何在 mongodb 字段中将字典存储为数组对象
- shodan - 从搜索结果中过滤掉蜜罐
- java - 矩阵中的 A、B、C、D、E、F、G、H,前提是他们最多和最少 2 次使用这些字母
- azure-application-insights - 在 Azure 门户中绘图之前从应用程序见解中删除重复的自定义指标事件
- django - 无法从公共 IP 访问我的 AWS Lightsail Django 应用程序