如何在 Nextjs 中切换 class 并更改 CSS?
How can I toggle a class and change the CSS in Nextjs?
我正在开发一个 Next.js 项目,其中打开菜单时 <p>
切换菜单 class。我设法做到了这一点,但是当我在 CSS 中添加 class 时,它没有同时考虑 classes.
这是我的代码:
组件
import { useState } from "react";
import styles from "../styles/modules/header.module.scss";
export default function Component() {
const [isModal, setIsModal] = useState(false);
return (
<div>
<p onClick={() => setIsModal(!isModal)}>Menu</p>
<div className={`${isModal && "nav-open"} ${styles.ModalContainer}`}>
Content
</div>
</div>
);
}
SCSS
.ModalContainer {
position: absolute;
left: -100vw;
&.nav-open {
left: 0;
}
}
当我检查代码时,我可以看到它在我单击菜单按钮时添加了 class,但看不到预期的更改。有人有解决方案吗?
您需要使用范围 Sass 模块文件中的 class,在本例中为 styles["nav-open"]
。简单地设置 "nav-open"
将引用一个全局 class,它可能不存在。
export default function Component() {
const [isModal, setIsModal] = useState(false);
const contentClassname = isModal
? `${styles["nav-open"]} ${styles.ModalContainer}`
: styles.ModalContainer;
return (
<div>
<p onClick={() => setIsModal(!isModal)}>Menu</p>
<div className={contentClassname}>Content</div>
</div>
);
}
我正在开发一个 Next.js 项目,其中打开菜单时 <p>
切换菜单 class。我设法做到了这一点,但是当我在 CSS 中添加 class 时,它没有同时考虑 classes.
这是我的代码:
组件
import { useState } from "react";
import styles from "../styles/modules/header.module.scss";
export default function Component() {
const [isModal, setIsModal] = useState(false);
return (
<div>
<p onClick={() => setIsModal(!isModal)}>Menu</p>
<div className={`${isModal && "nav-open"} ${styles.ModalContainer}`}>
Content
</div>
</div>
);
}
SCSS
.ModalContainer {
position: absolute;
left: -100vw;
&.nav-open {
left: 0;
}
}
当我检查代码时,我可以看到它在我单击菜单按钮时添加了 class,但看不到预期的更改。有人有解决方案吗?
您需要使用范围 Sass 模块文件中的 class,在本例中为 styles["nav-open"]
。简单地设置 "nav-open"
将引用一个全局 class,它可能不存在。
export default function Component() {
const [isModal, setIsModal] = useState(false);
const contentClassname = isModal
? `${styles["nav-open"]} ${styles.ModalContainer}`
: styles.ModalContainer;
return (
<div>
<p onClick={() => setIsModal(!isModal)}>Menu</p>
<div className={contentClassname}>Content</div>
</div>
);
}