Skip to content
Grok

การจัดการสไตล์ใน React

CSS-in-JS

CSS-in-JS ช่วยให้เขียน CSS ใน JavaScript โดยตรง มีข้อดีเรื่อง Scoped Styles และสามารถใช้ตัวแปรจาก JavaScript ได้

tsx
/** @jsxImportSource @emotion/react */
import { css } from "@emotion/react";

const buttonStyle = css`
  padding: 10px 20px;
  background-color: #007bff;
  color: white;
  border: none;
  border-radius: 4px;
`;

function Button() {
  return <button css={buttonStyle}>Click Me</button>;
}

CSS Modules

CSS Modules เป็นวิธีที่นิยมใช้ใน React โดยจะสร้าง unique class name ให้อัตโนมัติ ป้องกันการชนกันของชื่อคลาส

tsx
// Button.module.css
.primary {
  padding: 10px 20px;
  background-color: #007bff;
  color: white;
}

// Button.tsx
import styles from './Button.module.css';

function Button() {
  return <button className={styles.primary}>Click Me</button>;
}

Tailwind CSS

Tailwind CSS เป็น Utility-First CSS Framework ที่ช่วยให้สร้าง UI ได้รวดเร็ว

tsx
function Button() {
  return (
    <button className="px-4 py-2 bg-blue-500 text-white rounded">
      Click Me
    </button>
  );
}

UnoCSS

UnoCSS เป็น Atomic CSS Engine ที่ทำงานได้เร็วและปรับแต่งได้

tsx
function Button() {
  return (
    <button className="p-2 bg-blue-400 text-white rounded">
      Click Me
    </button>
  );
}