簡體   English   中英

如何在反應組件中添加和刪除類名?

[英]How do I add and remove classNames in a react component?

我想使用 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 中的組件做同樣的事情。

className是一個元素屬性。 因此,您需要在render組件 function 中設置它,如下所示:

...
render() {
  let className = 'menu';
  if (this.props.isActive) {
    className += ' menu-active';
  }
  return <span className={className}>Menu</span>
}

是一個關於如何使用 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>
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM