在 React (Next.js + css-modules) 中使用 SCSS @exported classNames 的更短方式

Shorter way to use SCSS @exported classNames in React (Next.js + css-modules)

我在 SCSS 中有一套语义颜色 类,应该根据组件的 props 将其应用于组件。我正在使用 React + Next.js + css-modules.

我想要什么:

我在下面编写的当前代码可以正常工作,但我想要一种更简单的方法...为每个组件声明一堆类名以@extend 其他东西太过分了!我想直接在jsx部分写扩展。有没有更好(更动态)的方法来做到这一点?也许内联扩展?

不是有效代码,但我正在寻找类似这样的代码:

export default function Component({ status }) {
    return (
        <div style={@extend %{status}}>
          ...
        </div>
    )
}

代码

这是语义文件。我将它导入到其他 scss 文件中以扩展 类:

/* _semantics.scss */

%warning {
    background: orange;
    color: red;
}

%error {
    background: red;
    color: black;
}
...

示例组件

/* component.module.scss */

@use "semantics" as *;

.warning {
    @extend %warning;
}

.error {
    @extend %error;
}

.success {
    @extend %success;
}
// component.jsx

import css from "./component.module.scss"

export default function Component({ status }) {
    return (
        <div className={css[status]}>
          ...
        </div>
    )
}
// index.jsx

<Component status="warning">...</Component>

备注

我正在寻找替代方法,所以:

你可以使用全局css来达到这个目的