← Level 3 – Master

Pelajaran 6 dari 10 ⏱ 90 menit Premium

Pembangunan kembali besar-besaran: situs web kamu di React

Tulis ulang situs web Level 1 kamu di React. Situs web yang sama, untuk ketiga kalinya – kali ini seperti seorang profesional.

Misi kamu

kamu akan mengambil situs web kamu dari Level 1–2 dan membangunnya kembali di React. Kedengarannya seperti sebuah langkah mundur? Bukan – ini adalah pelatihan terbaik yang pernah ada: kamu sudah mengetahui konten dan desainnya, sehingga kamu dapat fokus sepenuhnya pada teknik baru. Dan pada akhirnya, kamu akan melihat secara hitam dan putih mengapa para profesional menganggapnya bermanfaat.

Rencana pembangunan kembali

  1. Bagi situs web menjadi beberapa komponen. Ambil kertas dan pensil (serius!) dan buat sketsa situs web kamu sebagai kotak: Header, Galeri, Kuis, Footer… Setiap kotak = satu file di src/.

  2. Pindahkan HTML ke dalam komponen. Salin sepotong demi sepotong dari file .html lama kamu ke JSX. Perhatikan perbedaan yang umum: kelasnamakelas, setiap komponen mengembalikan satu elemen pembungkus. Salin gambar kamu ke folder publik/ di proyek Vite – lalu jalur seperti /images/team.jpg berfungsi tidak berubah.

  3. Pindahkan CSS. Salin konten style.css kamu ke src/App.css. Seharusnya berfungsi hampir tidak berubah – CSS tetaplah CSS.

  4. Tarik data ke dalam array. Kartu, hasil, foto galeri – apa pun yang berulang, ubah menjadi array objek + .map(), seperti yang kamu pelajari di pelajaran komponen.

  5. Tulis ulang mantra Level 2 sebagai status. Berikut tabel konversinya:

    Tingkat 2 (JavaScript biasa)Bereaksi
    getElementById + teksKontenstatus + {nilai} di BEJ
    addEventListener("klik", ...)onKlik={...}
    classList.toggle + CSS .hiddenstatus boolean + {kondisi && (...)}
    penghitung dengan variabeluseState dengan nomor

Tunjukkan pada saya: mode gelap dengan cara Bereaksi

Mari kita tulis ulang satu mantra bersama-sama, sehingga kamu dapat melihat konversinya beraksi:

import { useState } from 'react';
import Header from './Header.jsx';
import Gallery from './Gallery.jsx';

function App() {
  const [dark, setDark] = useState(
    localStorage.getItem("mode") === "dark"
  );

  function toggleMode() {
    const newMode = !dark;
    setDark(newMode);
    localStorage.setItem("mode", newMode ? "dark" : "light");
  }

  return (
    <div className={dark ? "dark" : ""}>
      <Header onToggle={toggleMode} dark={dark} />
      <Gallery />
    </div>
  );
}

export default App;

Dan di Header.jsx, tombol menerima fungsi sebagai penyangga:

function Header({ onToggle, dark }) {
  return (
    <header>
      <h1>My website</h1>
      <button onClick={onToggle}>{dark ? "☀️" : "🌙"}</button>
    </header>
  );
}

Satu hal baru yang terakhir: prop dapat menjadi fungsi juga. Aplikasi memiliki negara bagian dan meminjamkan tombol kepada anaknya untuk mengaktifkannya. Ini disebut “status hidup di atas”, dan ini adalah pola yang paling umum di React.

Buat kembali daftar periksa

💡

Terjebak adalah bagian dari permainan. Pelajaran ini adalah maraton, bukan lari cepat – silakan membaginya menjadi beberapa hari. Saat kamu mengalami kebuntuan: konsol (F12), pesan kesalahan dari Vite, dan membandingkan dengan contoh dari pelajaran sebelumnya. Begitulah cara seorang profesional melakukan debug.

Periksa diri kamu: Situs web kamu berjalan di localhost dan terlihat (hampir) sama seperti sebelumnya – namun di dalamnya, situs tersebut terbuat dari komponen, data, dan status. Sekarang coba tambahkan satu kartu ke susunan data dan perhatikan betapa sedikit pekerjaan yang diperlukan. Itulah yang menjadi alasan utama keberadaan React.

Apa yang bisa diambil dari pelajaran ini