首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React组件库+ SASS模块

React组件库+ SASS模块
EN

Stack Overflow用户
提问于 2022-11-08 20:05:44
回答 2查看 35关注 0票数 0

我开始开发一个库,我想重用一些我们与其他非反应性项目共享的SCSS代码。

为了实现这一点,我尝试在react组件中使用SASS模块

这个简单的用例工作得很好,但是我正在创建一个组件库,我需要为一些组件(比如按钮)提供几个样式组合。

现在,我对Button组件有一个问题。组件非常简单,但它有3个不同的variant值。

下面是Button.tsx文件:

代码语言:javascript
复制
import React from "react";
import styles from "./Button.module.scss";

type Variant = "default" | "primary" | "tertiary";

interface Props {
  children: String;
  variant: Variant;
}

export const Button: React.FC<Props> = ({ children, variant }) => {
  return <button className={`${styles.button} ${variant}`}>{children}</button>;
};

下面是Button.module.scss文件:

代码语言:javascript
复制
.button {
  border: none;
  padding: 0.5rem 1.5rem;
  border-radius: 0.25rem;
  background-color: grey;
  color: white;

  &.default {
    background-color: green;
  }
  &.primary {
    background-color: red;
  }
}

我所期望的是,如果我使用像<Button variant="default">I'm green</Button>这样的组件,那么就会有一个绿色按钮,但是我得到的是灰色按钮。

下面是码箱上的一个活生生的例子

我被困在这上面了,有人能帮我根据道具的价值应用不同的款式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-08 22:30:57

代码语言:javascript
复制
<button className={`${styles.button} ${styles[variant]}`}>
票数 1
EN

Stack Overflow用户

发布于 2022-11-08 23:02:12

请使用classnames npm库。

代码语言:javascript
复制
import cn from 'classnames';

<button className={cn(styles.button, styles[variant])}>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74366553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档