Entry Point, Rendering, dan Component Tree
Untuk memahami bagaimana aplikasi React ditampilkan di browser, kita perlu memahami beberapa konsep dasar, yaitu Entry Point, createRoot, render, dan Component Tree.
1. Titik Masuk Aplikasi (Entry Point)
Setiap aplikasi React memiliki titik awal yang digunakan untuk menghubungkan kode React dengan halaman HTML.
File utama yang disajikan kepada browser adalah:
index.html
Contoh sederhana:
<!DOCTYPE html>
<html>
<head>
<title>React App</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Elemen penting dalam contoh tersebut adalah:
<div id="root"></div>
Elemen tersebut menjadi wadah utama tempat aplikasi React akan dirender.
File seperti:
main.jsx
atau:
index.jsx
biasanya menjadi entry point JavaScript untuk aplikasi React.
2. Bagaimana React Terhubung dengan HTML?
Secara sederhana, prosesnya dapat digambarkan seperti berikut:
index.html
│
▼
<div id="root"></div>
│
▼
main.jsx
│
▼
React
│
▼
<App />
│
▼
Component Tree
│
▼
HTML DOM
React mengambil elemen root yang sudah tersedia di index.html, kemudian menggunakan elemen tersebut sebagai tempat untuk menampilkan aplikasi.
3. createRoot()
React menyediakan fungsi createRoot() untuk membuat root React pada elemen HTML tertentu.
Contoh:
import { createRoot } from "react-dom/client";
import App from "./App.jsx";
const root = createRoot(
document.getElementById("root")
);
Bagian:
document.getElementById("root")
digunakan untuk mengambil elemen HTML:
<div id="root"></div>
Kemudian:
createRoot(...)
membuat root yang digunakan React untuk mengelola aplikasi.
4. render()
Setelah root dibuat, kita dapat menggunakan method render() untuk menampilkan React Component.
Contoh:
const root = createRoot(
document.getElementById("root")
);
root.render(
<App />
);
Kode:
root.render(<App />);
memberitahu React untuk merender component App ke dalam root.
5. Contoh Entry Point Lengkap
Berikut contoh sederhana file main.jsx:
import { createRoot } from "react-dom/client";
import App from "./App.jsx";
const root = createRoot(
document.getElementById("root")
);
root.render(
<App />
);
Sedangkan App.jsx:
function App() {
return (
<h1>
Hello React!
</h1>
);
}
export default App;
Alurnya:
index.html
│
▼
#root
│
▼
main.jsx
│
▼
<App />
│
▼
<h1>Hello React!</h1>
6. Konsep Component Tree
Dalam aplikasi React, sebuah component dapat menggunakan component lainnya.
Contoh:
function App() {
return (
<div>
<Header />
<main>
<ProductList />
</main>
<Footer />
</div>
);
}
Component App memiliki beberapa component anak:
App
├── Header
├── ProductList
└── Footer
Jika ProductList juga menggunakan component lain:
function ProductList() {
return (
<div>
<ProductCard />
<ProductCard />
<ProductCard />
</div>
);
}
maka struktur component menjadi:
App
├── Header
├── ProductList
│ ├── ProductCard
│ ├── ProductCard
│ └── ProductCard
└── Footer
Struktur hierarki tersebut disebut Component Tree.
7. Apa Itu Component Tree?
Component Tree adalah struktur hierarki yang menggambarkan hubungan antara component dalam aplikasi React.
Contohnya:
App
│
├── Header
│ └── Navigation
│
├── Main
│ └── ProductList
│ ├── ProductCard
│ ├── ProductCard
│ └── ProductCard
│
└── Footer
Component yang berada di atas disebut parent component, sedangkan component yang berada di bawahnya disebut child component.
Contoh:
App
└── Header
App adalah parent dari Header.
8. Custom Component vs HTML Element
React membedakan Custom Component dan HTML Element berdasarkan penulisan namanya.
Custom Component
Custom Component menggunakan nama yang diawali huruf kapital.
Contoh:
<Header />
<UserProfile />
<ProductCard />
<Navigation />
HTML Element
HTML Element menggunakan nama huruf kecil.
Contoh:
<header></header>
<div></div>
<section></section>
<button></button>
9. Mengapa Huruf Kapital Penting?
Perhatikan:
<Header />
React akan mengenalinya sebagai Custom Component.
Sedangkan:
<header></header>
dikenali sebagai HTML element.
Karena itu, aturan penamaan component sangat penting.
Contoh:
function Header() {
return <header>My Website</header>;
}
Kemudian digunakan:
<Header />
React akan menjalankan fungsi Header.
10. Custom Component Tidak Menjadi Tag HTML
Salah satu konsep penting adalah Custom Component seperti:
<Header />
tidak akan muncul sebagai:
<Header></Header>
di DOM browser.
React menggunakan Header sebagai component dan menjalankan fungsi tersebut.
Misalnya:
function Header() {
return (
<header>
<h1>My Website</h1>
</header>
);
}
Ketika React memproses:
<Header />
React menjalankan component Header dan mendapatkan:
<header>
<h1>My Website</h1>
</header>
Kemudian elemen HTML tersebut yang akan dirender ke DOM.
11. Proses Rendering Component
Secara sederhana, prosesnya adalah:
<Header />
│
▼
React menjalankan Header()
│
▼
return (
<header>
<h1>My Website</h1>
</header>
)
│
▼
React memproses elemen HTML
│
▼
DOM Browser
Jadi, component berfungsi sebagai cara untuk menghasilkan struktur UI.
12. Contoh Component Bersarang
Misalnya kita memiliki:
function Header() {
return (
<header>
<Navigation />
</header>
);
}
function Navigation() {
return (
<nav>
<a href="/">Home</a>
<a href="/products">Products</a>
</nav>
);
}
function App() {
return (
<div>
<Header />
</div>
);
}
Component Tree-nya:
App
└── Header
└ ── Navigation
React akan mengevaluasi component dari struktur tersebut hingga menghasilkan elemen HTML yang dapat dirender ke browser.
13. Component Tree dan DOM
Penting untuk membedakan Component Tree dan DOM Tree.
Component Tree:
App
├── Header
│ └── Navigation
└── Main
└── ProductList
Sedangkan hasil akhirnya pada DOM dapat berupa:
div
├ ── header
│ └── nav
│ ├── a
│ └── a
└── main
└── div
├── article
├── article
└── article
Custom Component seperti App, Header, dan ProductList berfungsi sebagai bagian dari struktur React, sedangkan DOM browser berisi node HTML yang dihasilkan oleh component tersebut.
14. Alur Lengkap Aplikasi React
Secara keseluruhan, proses aplikasi React dapat digambarkan seperti berikut:
index.html
│
▼
<div id="root"></div>
│
▼
main.jsx
│
▼
createRoot()
│
▼
root.render(<App />)
│
▼
App Component
│
├── Header
│ └── Navigation
│
├── Main
│ └── ProductList
│ └── ProductCard
│
└── Footer
│
▼
React menghasilkan HTML Elements
│
▼
DOM Browser
│
▼
User Interface
15. Poin Penting
Beberapa konsep utama yang perlu diingat:
Entry Point
index.html merupakan halaman HTML utama yang menjadi titik awal aplikasi yang disajikan ke browser.
Root Element
Elemen seperti:
<div id="root"></div>
menjadi tempat aplikasi React dipasang.
createRoot()
Digunakan untuk membuat React Root berdasarkan elemen HTML yang sudah tersedia.
const root = createRoot(
document.getElementById("root")
);
render()
Digunakan untuk merender component ke dalam React Root.
root.render(<App />);
Component Tree
Hierarki component dalam aplikasi React.
App
├── Header
├── Main
└── Footer
Custom Component
Ditulis menggunakan huruf kapital:
<Header />
HTML Element
Ditulis menggunakan huruf kecil:
<header></header>
Custom Component Tidak Menjadi Tag DOM
React menjalankan component untuk menghasilkan elemen HTML yang kemudian dirender ke DOM.
Kesimpulan
React bekerja dengan menghubungkan HTML sebagai entry point dengan Component Tree yang dibangun menggunakan JavaScript dan JSX.
Proses sederhananya adalah:
index.html
↓
#root
↓
createRoot()
↓
render(<App />)
↓
Component Tree
↓
React Components
↓
HTML Elements
↓
DOM
↓
User Interface
Dengan memahami alur ini, kita dapat melihat bahwa React bukan sekadar kumpulan tag HTML. React menggunakan component sebagai struktur utama aplikasi, kemudian menjalankan component tersebut untuk menghasilkan elemen HTML yang akhirnya ditampilkan oleh browser.