Sunday, 17 August 2025

Panduan Lengkap Styling Komponen JSX di React untuk Pemula

JSX (JavaScript XML) adalah sintaks khusus yang digunakan di React untuk menuliskan elemen UI dengan cara yang mirip HTML.

Karena JSX pada dasarnya adalah JavaScript yang bisa menyisipkan elemen HTML, kita juga bisa menambahkan styling agar tampilan komponen menjadi lebih indah.

Inline style berarti menambahkan styling langsung di elemen menggunakan atribut style. Dalam JSX, nilai dari style berupa object JavaScript.

function InlineExample() {
  return (
    <h1 style={{ color: "blue", fontSize: "24px", textAlign: "center" }}>
      Hello, React!
    </h1>
  );
}

Cara paling umum adalah menggunakan file CSS terpisah. Kita menulis kode CSS di file .css, lalu mengimpor ke komponen. 
App.css
.title {
  color: red;
  font-size: 28px;
  text-align: center;
}
 
App.js
import "./App.css";
function CssExample() {
  return <h1 className="title">Hello dengan CSS Eksternal!</h1>;
}

CSS Modules adalah fitur React yang membuat class CSS bersifat lokal hanya untuk komponen tertentu.

Button.module.css
.button {
  background-color: green;
  color: white;
  padding: 10px 20px;
  border-radius: 8px;
}

Button.js
import styles from "./Button.module.css";
function Button() {
  return <button className={styles.button}>Klik Saya</button>;
}

Styled Components memungkinkan kita menulis CSS langsung di dalam file JavaScript menggunakan tagged template literals.

import styled from "styled-components";
const Title = styled.h1`
  color: purple;
  font-size: 32px;
  text-align: center;
`; 
function StyledExample() {
  return <Title>Hello dengan Styled Components!</Title>;
}

Kelebihan: sangat fleksibel, style bisa dinamis berdasarkan props. Cocok untuk aplikasi modern.


Tailwind adalah utility-first CSS framework yang sangat populer di React. Kita bisa styling
dengan class bawaan tanpa menulis CSS manual.


function TailwindExample() {
  return (
    <h1 className="text-blue-500 text-3xl font-bold text-center">
      Hello dengan Tailwind CSS!
    </h1>
  );
}

Kelebihan: cepat, konsisten, ringan.
Cocok untuk pengembangan aplikasi modern.
Praktik Terbaik Styling JSX
1.      Gunakan CSS Modules atau Styled Components untuk proyek menengah ke besar agar lebih
terorganisir.
2.      Jika butuh cepat dan konsisten, Tailwind CSS sangat membantu.
3.      Hindari terlalu banyak inline style, kecuali untuk kondisi sederhana atau style dinamis.
4.      Selalu gunakan penamaan class yang jelas agar mudah dikelola.

Styling komponen JSX di React bisa dilakukan dengan berbagai cara:
Inline Style → cepat, cocok untuk styling sederhana.
CSS Eksternal → umum digunakan, rapi untuk proyek kecil.
CSS Modules → aman dari bentrokan class.
Styled Components → fleksibel dengan CSS-in-JS.
Tailwind CSS → praktis untuk desain cepat dan modern.

Dalam React, ada beberapa cara untuk menambahkan gaya (style) pada komponen JSX, salah satunya adalah dengan inline style. Cara ini biasanya digunakan untuk styling yang sederhana, cepat, atau ketika style perlu dibuat dinamis sesuai kondisi tertentu.

Inline Style adalah teknik menambahkan style langsung ke elemen dengan menggunakan atribut style.
Namun, berbeda dengan HTML biasa yang menggunakan string CSS, di React inline
style ditulis dalam bentuk object JavaScript.

Contoh perbandingan:
HTML Biasa
<h1 style="color: blue; font-size: 20px;">Hello World</h1>
React (JSX)
<h1 style={{ color: "blue", fontSize: "20px" }}>Hello World</h1>
Perhatikan: Property CSS ditulis dengan camelCase (contoh: font-sizefontSize).
Nilai style ditulis sebagai string atau angka (jika angka, otomatis satuan default-nya adalah px).

Contoh Penggunaan Inline Style

function App() {
  return (
    <div>
      <h1 style={{ color: "green", fontSize: "24px" }}>
        Belajar Inline Style di React
      </h1>
      <p style={{ textAlign: "center", fontStyle: "italic" }}>
        Ini adalah contoh penggunaan inline style.
      </p>
    </div>
  );
}

Inline Style dengan Variabel Object

Untuk membuat kode lebih rapi, style bisa disimpan di variabel JavaScript.

const titleStyle = {
  color: "purple",
  fontSize: "28px",
  textAlign: "center",
};
function App() {
  return <h1 style={titleStyle}>Hello dengan Object Style!</h1>;
}

Inline Style Dinamis

Inline style juga mendukung penggunaan kondisi.

function App() {
  const isActive = true;
  return (
    <button
      style={{
        backgroundColor: isActive ? "blue" : "gray",
        color: "white",
        padding: "10px 20px",
        border: "none",
        borderRadius: "8px",
      }}
    >
      {isActive ? "Aktif" : "Nonaktif"}
    </button>
  );
}

Kelebihan : Mudah digunakan untuk styling cepat, Cocok untuk style dinamis berdasarkan kondisi,

Tidak perlu file CSS terpisah.

Kekurangan : Sulit dikelola jika style semakin kompleks, Tidak mendukung pseudo-class

(:hover, :focus) atau media queries langsung, Membuat komponen terlihat berantakan jika style

terlalu banyak.


Inline style cocok digunakan untuk:

Prototype cepat atau project kecil.

Styling dinamis yang berubah sesuai state/props.

Style unik yang hanya dipakai sekali di sebuah komponen.

Namun, untuk proyek besar, sebaiknya gunakan CSS eksternal, CSS Modules, atau Tailwind CSS

agar lebih terstruktur.

Inline style di React adalah teknik styling langsung menggunakan object JavaScript. Metode ini sangat praktis untuk kebutuhan sederhana atau styling dinamis, namun kurang efisien jika

digunakan dalam aplikasi besar yang kompleks.


Dengan memahami inline style, pemula dapat lebih cepat beradaptasi dengan cara kerja React sebelum melangkah ke metode styling yang lebih canggih.

Metode ini menggunakan file .css terpisah sehingga kode menjadi lebih rapi, terstruktur, dan mudah dikelola, terutama untuk proyek yang semakin besar.

CSS Eksternal adalah file CSS yang ditulis terpisah dari komponen, lalu diimpor ke dalam file JavaScript/JSX.

Keuntungannya: Kode lebih bersih (JSX hanya berisi struktur, CSS berisi gaya). Style bisa digunakan ulang di banyak komponen, Mudah dikelola ketika aplikasi berkembang.

Cara Menggunakan CSS Eksternal di React

Buat file dengan ekstensi .css, misalnya App.css.

App.css

.title {
  color: blue;
  font-size: 28px;
  text-align: center;
}
.description {
  color: gray;
  font-size: 16px;
  text-align: justify;
}

Mengimpor File CSS ke Komponen

Setelah membuat file CSS, impor ke dalam file React dengan perintah import "./App.css";.

App.js

import "./App.css";
function App() {
  return (
    <div>
      <h1 className="title">Belajar CSS Eksternal di React</h1>
      <p className="description">
        Styling dengan CSS eksternal membuat kode lebih rapi dan mudah dikelola.
      </p>
    </div>
  );
}
export default App;

Perhatikan: di React kita menggunakan atribut className (bukan class) untuk memberikan style.

Styling di Banyak Komponen

Misalnya kita punya komponen Button.js:

Button.css

.button {
  background-color: green;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
}
.button:hover {
   background-color: darkgreen;
}

Button.js

import "./Button.css";
function Button() {
  return <button className="button">Klik Saya</button>;
}
export default Button;

Dengan cara ini, setiap komponen bisa punya file CSS masing-masing agar lebih terorganisir.

Kelebihan : Kode lebih terstruktur dan mudah dipelihara, Bisa menggunakan fitur CSS

penuh (pseudo-class :hover, media queries, dll), Style bisa digunakan ulang di berbagai komponen.

Kekurangan : Bisa terjadi konflik class jika nama class sama di banyak komponen. Untuk proyek besar, sulit melacak class mana yang dipakai oleh komponen tertentu.

Styling dengan CSS eksternal di React adalah cara yang paling umum dan mudah dipahami pemula.
Dengan memisahkan file .css dari komponen, kode menjadi lebih rapi, mudah dipelihara, dan mendukung fitur CSS penuh.

Dalam membangun aplikasi React, styling adalah bagian penting untuk menciptakan tampilan

yang menarik. Setelah mengenal inline style dan CSS eksternal, ada dua pendekatan modern

yang sering digunakan untuk mengatasi masalah konflik class dan memudahkan pengelolaan style,

yaitu: CSS Modules, Styled Components

Keduanya memiliki kelebihan masing-masing dan cocok digunakan pada proyek skala menengah hingga besar.

CSS Modules adalah fitur yang membuat setiap class CSS bersifat lokal terhadap komponen yang mengimpornya. Artinya, class yang ditulis di satu file CSS tidak akan bertabrakan dengan class lain di komponen berbeda.

Membuat File CSS Modules
File CSS Modules biasanya menggunakan ekstensi .module.css.

Button.module.css
.button {
  background-color: #007bff;
  color: white;
  padding: 10px 20px;
  border-radius: 6px;
  border: none;
  cursor: pointer;
}

.button:hover {
  background-color: #0056b3;
}

Mengimpor dan Menggunakan di Komponen

Button.js

import styles from "./Button.module.css";
function Button() {
  return <button className={styles.button}>Klik Saya</button>;
}
export default Button;

Perhatikan bahwa kita memanggil class dengan styles.button, bukan "button".

Kelebihan CSS Modules : Menghindari konflik class antar komponen, Kode lebih rapi

dan terorganisir, Masih tetap menggunakan sintaks CSS murni.

Kekurangan CSS Modules: Harus membuat file CSS tambahan untuk setiap komponen,

Kurang fleksibel untuk style yang sangat dinamis.

Styled Components

Styled Components adalah library populer di React yang menggunakan konsep CSS-in-JS.
Artinya, kita bisa menulis CSS langsung di file JavaScript dengan bantuan template literals.

Styled Components membuat setiap komponen memiliki style yang unik tanpa khawatir terjadi konflik.

Cara Menggunakan Styled Components

a. Instalasi Styled Components perlu diinstal terlebih dahulu:

npm install styled-components

b. Membuat Styled Components

Button.js

import styled from "styled-components";
const Button = styled.button`
  background-color: #28a745;
  color: white;
  padding: 10px 20px;
  border-radius: 6px;
  border: none;
  cursor: pointer;
  &:hover {
    background-color: #1e7e34;
  };
function App() {
  return <Button>Klik Saya</Button>;
}
export default App;

Styling Dinamis dengan Props

Styled Components juga mendukung style dinamis berdasarkan props.

import styled from "styled-components";
const Button = styled.button`
  background-color: ${(props) => (props.primary ? "blue" : "gray")};
  color: white;
  padding: 10px 20px;
  border-radius: 6px;
  border: none;
  cursor: pointer;
`;
 
function App() {
  return (
    <div>
      <Button primary>Button Utama</Button>
      <Button>Button Sekunder</Button>
    </div>
  );
}
export default App;

Kelebihan Styled Components: Tidak ada konflik class, Mendukung style dinamis

(berdasarkan props/state), CSS ditulis langsung di dalam file komponen.

Kekurangan Styled Components : Perlu library tambahan, jika terlalu banyak styled components,

ukuran bundle bisa membesar.

Perbandingan CSS Modules vs Styled Components

CSS Modules cocok untuk kamu yang terbiasa dengan CSS murni dan ingin menjaga agar
style tidak bentrok antarkomponen.
Styled Components lebih cocok untuk kamu yang suka menulis CSS langsung di file
JavaScript dan membutuhkan style dinamis.

2 comments: