在 next.js 中将道具作为类名传递
passing props as classNames in next.js
我正在尝试让我的每个应用程序页面的 header 根据当前页面更改颜色。我是如何实现这一目标的:
<Header className="headerBitcoin"></Header>
我想要的是能够在所有 4 个页面上都显示 header 组件,然后只需将 className 更改为另一个道具即可更改背景,但不能更改任何其他内容。
header 组件本身
import styles from "../../styles/Home.module.css";
export default function Header(props) {
return (
<div >
<div className={props.className}>aaaaa</div>
<div className={styles.row}>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
</div>{" "}
</div>
);
}
目前选项卡和行的样式有效,但 header 未应用其样式。
我检查了控制台,发现 header 正在将类名 headerBitcoin
传递给它,但是它下面的行的类名是 "Home_row__88lPM"
这是我第一次使用 next.js,我知道我做错了什么,因为这在 React 中有效。任何帮助将不胜感激。
我认为它没有被应用,因为您在 CSS 模块中定义了 headerBitcoin
样式。
如果您想以这种方式应用 class (className="headerBitcoin"
),则需要在全局 CSS 中定义 class。
如果您打算使用 Home.module.css
中定义的 headerBitcoin
,那么您需要将 className
更改为使用范围 styles
.
import styles from "../../styles/Home.module.css";
export default function Header(props) {
return (
<div >
<div className={styles[props.className]}>aaaaa</div>
// ...
</div>
);
}
不要这样做:
<div className={props.className}>aaaaa</div>
试试这个:
<div className={styles[props.className]}>aaaaa</div>
我认为这应该可行
我正在尝试让我的每个应用程序页面的 header 根据当前页面更改颜色。我是如何实现这一目标的:
<Header className="headerBitcoin"></Header>
我想要的是能够在所有 4 个页面上都显示 header 组件,然后只需将 className 更改为另一个道具即可更改背景,但不能更改任何其他内容。
header 组件本身
import styles from "../../styles/Home.module.css";
export default function Header(props) {
return (
<div >
<div className={props.className}>aaaaa</div>
<div className={styles.row}>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
<div className={styles.tab}>a</div>
</div>{" "}
</div>
);
}
目前选项卡和行的样式有效,但 header 未应用其样式。
我检查了控制台,发现 header 正在将类名 headerBitcoin
传递给它,但是它下面的行的类名是 "Home_row__88lPM"
这是我第一次使用 next.js,我知道我做错了什么,因为这在 React 中有效。任何帮助将不胜感激。
我认为它没有被应用,因为您在 CSS 模块中定义了 headerBitcoin
样式。
如果您想以这种方式应用 class (className="headerBitcoin"
),则需要在全局 CSS 中定义 class。
如果您打算使用 Home.module.css
中定义的 headerBitcoin
,那么您需要将 className
更改为使用范围 styles
.
import styles from "../../styles/Home.module.css";
export default function Header(props) {
return (
<div >
<div className={styles[props.className]}>aaaaa</div>
// ...
</div>
);
}
不要这样做:
<div className={props.className}>aaaaa</div>
试试这个:
<div className={styles[props.className]}>aaaaa</div>
我认为这应该可行