javascript - 为什么向下滚动导航栏不改变颜色?
问题描述
这是我的示例代码
在浏览器中,我想向下滚动页面,导航栏会显示我显示的颜色。
<div style={{height: "800px"}}>
<h2 style={{backgroundColor: `${nav}`,
position: "fixed",
width: "100%"
}}
>
NaveBar {nav ? "red" : "blue"}!
</h2>
</div>
它也没有改变标题和颜色的名称。我只是不知道问题出在哪里。
有人可以帮我吗?
解决方案
您使用字符串初始化状态, useState("red");
然后将状态更新为对象setNav({ back });
要解决这个问题,只需将其更改为setNav(back)
顺便说一句 - 收听滚动事件可能会很慢,因此您可能想要“限制”该事件。
从 lodash 导入油门或复制粘贴此功能: https ://gist.github.com/abhinavnigam2207/a147abe0213d60467abacd33db7c6d2e
然后通过将函数包装到其中来使用它,如下所示:
useEffect(() => {
window.addEventListener(
"scroll",
throttle(() => {
const back = window.scrollY < 70 ? "red" : "blue";
setNav(back);
}, 100)
);
});
推荐阅读
- excel - for循环中的条件语句
- ruby-on-rails - Rails 5:如何设置合并工具以用于 rails app:update?
- xamarin - 使用 BindableLayout.ItemsSource 在 StackLayout 中进行命令绑定(使用 RelativeSourceExtension)
- sql-server - 无法从继承的工作 PC 卸载 SQL Server 2017
- python - 在生成文档术语矩阵之前或之后拆分为测试和训练集?
- wpf - RequestNavigate in MainWindowViewModel ctor
- azure-devops - 从 azure devops 中的包中读取发布版本
- django - Django 模型覆盖了我的数据库中的一条记录,而不是添加一条新记录
- javascript - Draft JS 编辑器中文本的垂直对齐
- javascript - Selenium 点击 GDPR 点击按钮