React-Komponentenbibliothek + SASS-Modularität
P粉818306280
P粉818306280 2024-03-26 21:31:03
0
2
329

Ich habe mit der Entwicklung einer React-Komponentenbibliothek begonnen und wollte einen Teil des SCSS-Codes wiederverwenden, den wir mit anderen Nicht-React-Projekten geteilt haben.

Um dies zu erreichen, habe ich versucht, SASS-Module in einer React-Komponente zu verwenden.

Ein einfacher Anwendungsfall funktioniert gut, aber ich erstelle eine Komponentenbibliothek und benötige mehrere Stilkombinationen für bestimmte Komponenten wie Schaltflächen.

Jetzt bin ich auf den Button 组件的问题。组件非常简单,但它有 3 个不同的 variant-Wert gestoßen.

Dies ist die Button.tsx-Datei:

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>;
};

Dies ist die Button.module.scss-Datei:

.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;
  }
}

Was ich erwartet habe, ist, dass es, wenn ich eine Komponente wie <Buttonvariant="default">I'm green</Button> verwende, einen grünen Knopf geben würde, aber was ich bekomme, ist ein grauer Knopf.

Dies ist ein Beispiel für Codesandbox

Ich stecke bei diesem Problem fest. Kann mir jemand helfen, je nach Requisitenwert verschiedene Stile anzuwenden?

P粉818306280
P粉818306280

Antworte allen(2)
P粉504080992

请使用 classnames npm 库。

import cn from 'classnames';

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!