如何在React.JS中添加ClassName并将其onScroll事件删除?

性质

我正在尝试制作一个可以根据其在页面上的位置来更改其背景颜色的粘性页眉。为此,我尝试将className“ active”添加到我的样式组件“ StyledHeader”中,当scrollPositionY高于400px时将出现,而在不足400px时将消失。

换句话说,我想要做的就是这样,但是要使用React.JS,JSX语法和样式化组件。

这是我现在拥有的:

import { Link } from '@reach/router';

import DuskLogo from '../images/dusk_logo.svg';

import { 
    StyledHeader, 
    StyledDuskLogo
} from '../styles/StyledHeader';

const Header = () => (
<StyledHeader>
  <div className="header-content">
    <Link to="/">
    <StyledDuskLogo src={DuskLogo} alt="dusk-logo" />
    </Link>
  </div>
</StyledHeader>
)

export default Header;

您知道简单的方法吗?

蓝海豹

在中添加事件监听器useEffect当你向下滚动的价值window.scrollY会增加,如1,2,... 100 ...(单位:像素)和更新您coloruseState按了window.scrollY尝试这样的事情

const StyledBody = window.styled.div`
  background: lightgray;
  height: 5000px;
`;

const StyledText = window.styled.h4`
  text-align: center;
  width: 250px;
  margin: auto;
  line-height: 40px;
`;

const StyledHeader = window.styled.div`
  background-color: ${props => props.color};
  width: 100%;
  height: auto;
  position: fixed;
  top: 0;
  left: 0;
  right: 0px;
  padding: 0;
  z-index: 10000;
  transition: all 1s ease-in-out;
`;

const Header = () => {
  const [color, setColor] = React.useState("rgba(17, 42, 107, 0.7)");

  const handleScroll = React.useCallback((event) => {
    let scrollTop = window.scrollY;

      //console.log(scrollTop );  //1,2,...100,...200...etc (in px)

      if (scrollTop >= 20 && scrollTop < 50) {
        setColor("yellow");
      }

      if (scrollTop >= 50 && scrollTop < 90) {
        setColor("red");
      }

      if (scrollTop >= 90 && scrollTop < 120) {
        setColor("green");
      }
      if (scrollTop >= 120 && scrollTop < 150) {
        setColor("blue");
      }
      if (scrollTop >= 150 && scrollTop < 180) {
        setColor("violet");
      }
      if (scrollTop >= 180 && scrollTop < 210) {
        setColor("purple");
      }
});

  React.useEffect(() => {
    window.addEventListener("scroll", handleScroll);
    return () => {
      window.removeEventListener("scroll", handleScroll, false);
    };
  }, []);

  return (
    <StyledBody>
      <StyledHeader color={color}>
        <StyledText>My background color changes</StyledText>
      </StyledHeader>
    </StyledBody>
  );
};

export default Header;

这是一个有效的演示..根据您的需要更改代码。演示

编辑:我已经为您添加了样式组件。检查一下,让我知道它是否对您有用。了解更多有关这些钩子去useEffectuseCallback

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取React中动态添加的点击组件的索引并将其删除?

来自分类Dev

如何在React Hook中添加自定义className?

来自分类Dev

如何在fullcalendar事件对象中添加多个className并使用一个指定的类名删除

来自分类Dev

如何在React组件中添加滚动事件

来自分类Dev

如何在单击li元素时添加“活动”类并将其从其他元素中同时删除?

来自分类Dev

如何使用Angular JS在带有输入字段的文本框中添加文本并将其从文本框中删除?

来自分类Dev

如何在React Native中删除警告

来自分类Dev

如何在 React 中删除异步组件?

来自分类Dev

如何在 React 中删除项目?

来自分类Dev

如何在React.js中从数组中删除组件

来自分类Dev

如何在React中单击添加样式

来自分类Dev

如何在React中添加内联样式?

来自分类Dev

React:如何在事件处理程序中调用react钩子?

来自分类Dev

如何在React中获取更多数据并将其正确存储在状态中?

来自分类Dev

如何在React.js中动态添加SelectOption

来自分类Dev

如何在React js组件中添加if-else?

来自分类Dev

如何在 React.js 中为图像添加路由

来自分类Dev

如何在React js中插入数据

来自分类Dev

如何在React JS中渲染对象

来自分类Dev

如何在 React Native 中为组件创建单独的类并将其用作通用类?

来自分类Dev

如何在 react-native 中创建变量并将其设置为多行 JSX 结构

来自分类Dev

我该如何在ReactJS的onScroll事件中处理DOM?

来自分类Dev

如何在 React 上读取事件的道具

来自分类Dev

BotFramework V4:如何从漫游器发送事件并将其捕获到React WebChat中?

来自分类Dev

React钩子从数组中删除项目并将其添加到另一个数组

来自分类Dev

如何在json变量中删除父字段并将其转换为javascript或jquery中的json

来自分类Dev

如何在perl中匹配一行中的单词并将其删除并单独使用?

来自分类Dev

JS - 如何从按钮单击事件中查找特定元素 TAG 以将其删除?

来自分类Dev

如何在Javascript中操纵当前时间(几次并将其添加到表中)?

Related 相关文章

  1. 1

    如何获取React中动态添加的点击组件的索引并将其删除?

  2. 2

    如何在React Hook中添加自定义className?

  3. 3

    如何在fullcalendar事件对象中添加多个className并使用一个指定的类名删除

  4. 4

    如何在React组件中添加滚动事件

  5. 5

    如何在单击li元素时添加“活动”类并将其从其他元素中同时删除?

  6. 6

    如何使用Angular JS在带有输入字段的文本框中添加文本并将其从文本框中删除?

  7. 7

    如何在React Native中删除警告

  8. 8

    如何在 React 中删除异步组件?

  9. 9

    如何在 React 中删除项目?

  10. 10

    如何在React.js中从数组中删除组件

  11. 11

    如何在React中单击添加样式

  12. 12

    如何在React中添加内联样式?

  13. 13

    React:如何在事件处理程序中调用react钩子?

  14. 14

    如何在React中获取更多数据并将其正确存储在状态中?

  15. 15

    如何在React.js中动态添加SelectOption

  16. 16

    如何在React js组件中添加if-else?

  17. 17

    如何在 React.js 中为图像添加路由

  18. 18

    如何在React js中插入数据

  19. 19

    如何在React JS中渲染对象

  20. 20

    如何在 React Native 中为组件创建单独的类并将其用作通用类?

  21. 21

    如何在 react-native 中创建变量并将其设置为多行 JSX 结构

  22. 22

    我该如何在ReactJS的onScroll事件中处理DOM?

  23. 23

    如何在 React 上读取事件的道具

  24. 24

    BotFramework V4:如何从漫游器发送事件并将其捕获到React WebChat中?

  25. 25

    React钩子从数组中删除项目并将其添加到另一个数组

  26. 26

    如何在json变量中删除父字段并将其转换为javascript或jquery中的json

  27. 27

    如何在perl中匹配一行中的单词并将其删除并单独使用?

  28. 28

    JS - 如何从按钮单击事件中查找特定元素 TAG 以将其删除?

  29. 29

    如何在Javascript中操纵当前时间(几次并将其添加到表中)?

热门标签

归档