Difference between revisions of "Membuat komponen dan mengelola state"
Onnowpurbo (talk | contribs)  (Created page with "Berikut adalah modul praktik yang dirancang untuk membantu Anda memahami cara membuat komponen dan mengelola state dalam React.js sebagai bagian dari mata kuliah Pemrograman W...")  | 
				Onnowpurbo (talk | contribs)   | 
				||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | ==Tujuan Pembelajaran:==  | |
| + | Setelah mempelajari modul ini, mahasiswa diharapkan mampu:  | ||
| + | * Memahami konsep '''komponen''' dalam framework frontend modern  | ||
| + | * Membedakan antara komponen '''stateless''' dan '''stateful'''  | ||
| + | * Mengelola '''state''' menggunakan React Hooks (`useState`)  | ||
| + | * Membuat interaksi antar komponen menggunakan props dan state  | ||
| − | + | ==Persiapan di Ubuntu 24.04==  | |
| − | 1.   | + | '''1. Install Node.js dan npm'''  | 
| − | |||
| − | |||
| − | + |  sudo apt update  | |
| + |  sudo apt install nodejs npm -y  | ||
| − | + | '''2. Verifikasi versi'''  | |
| − | |||
| − | |||
| − | + |  node -v  | |
| + |  npm -v  | ||
| − | |||
| − | + | '''3. Install Vite (alternatif lebih ringan dari create-react-app)'''  | |
| − | + |  npm create vite@latest nama-proyek -- --template react  | |
| − | + |  cd nama-proyek  | |
| − | + |  npm install  | |
| + |  npm run dev  | ||
| − | + | > Proyek React siap dijalankan di `http://localhost:5173`  | |
| − | |||
| − | + | ==1. Konsep Komponen==  | |
| − | |||
| − | |||
| − | + | '''Apa Itu Komponen?'''  | |
| − | + | Komponen adalah blok bangunan UI yang dapat digunakan kembali. Dalam React, komponen bisa ditulis sebagai '''function'''.  | |
| − | + | '''Contoh Komponen Sederhana:'''  | |
| − | |||
| − | |||
| − | |||
| − | + | <pre>  | |
| + |  // File: src/components/Header.jsx  | ||
| + |  function Header() {  | ||
| + |    return <h1>Selamat Datang di Web Saya</h1>;  | ||
| + |  }  | ||
| + |  export default Header;  | ||
| + | </pre>  | ||
| − | + | Kemudian digunakan di `App.jsx`:  | |
| − | + | <pre>  | |
| + |  import Header from './components/Header';  | ||
| + | |||
| + |  function App() {  | ||
| + |    return (  | ||
| + |      <div>  | ||
| + |        <Header />  | ||
| + |      </div>  | ||
| + |    );  | ||
| + |  }  | ||
| + | </pre>  | ||
| − | + | ==2. Mengelola State==  | |
| − | + | '''Apa Itu State?'''  | |
| − | + | State adalah data yang dikelola di dalam komponen yang bisa berubah seiring interaksi user.  | |
| − | |||
| − | |||
| − | + | '''Contoh: Counter dengan `useState`'''  | |
| − | + | <pre>  | |
| + |  import { useState } from 'react';  | ||
| + | |||
| + |  function Counter() {  | ||
| + |     const [count, setCount] = useState(0);   | ||
| − | + |     return (    | |
| − | + |      <div>  | |
| − | + |        <p>Nilai: {count}</p>  | |
| + |        <button onClick={() => setCount(count + 1)}>Tambah</button>  | ||
| + |      </div>  | ||
| + |     );  | ||
| + |  }  | ||
| − | + |  export default Counter;  | |
| + | </pre>  | ||
| − | + | ==3. Mengoper Data dengan Props==  | |
| − | |||
| − | |||
| − | |||
| − | + | '''Apa Itu Props?'''  | |
| − | + |  '''Props''' (properties) digunakan untuk mengirim data dari satu komponen ke komponen lain.  | |
| − | + | '''Contoh Props:'''  | |
| − | |||
| − | |||
| − | + | <pre>  | |
| + |  function Welcome(props) {  | ||
| + |    return <h2>Halo, {props.name}!</h2>;  | ||
| + |  }  | ||
| + | |||
| + |  // Di App.jsx  | ||
| + |  <Welcome name="Dzaq" />  | ||
| + | </pre>  | ||
| − | + | ==4. Interaksi antar Komponen==  | |
| − | + | '''Parent dan Child Component'''  | |
| − | + | Misal: `App.jsx` mengelola state dan mengirimkan ke `ChildComponent`  | |
| − | + | <pre>  | |
| + |  function Child({ message }) {  | ||
| + |    return <p>Pesan dari parent: {message}</p>;  | ||
| + |  }  | ||
| + | |||
| + |  function App() {  | ||
| + |    const [msg, setMsg] = useState("Halo Dunia");  | ||
| + | |||
| + |    return (  | ||
| + |      <div>  | ||
| + |        <Child message={msg} />  | ||
| + |      </div>  | ||
| + |    );  | ||
| + |  }  | ||
| + | </pre>  | ||
| − | + | '''Struktur Proyek yang Disarankan'''  | |
| − | + |  src/  | |
| − | + |  │  | |
| + |  ├── components/  | ||
| + |  │   ├── Header.jsx  | ||
| + |  │   ├── Counter.jsx  | ||
| + |  │   └── Footer.jsx  | ||
| + |  │  | ||
| + |  ├── App.jsx  | ||
| + |  └── main.jsx  | ||
| − | + | ==Tugas Praktik Mahasiswa==  | |
| − | |||
| − | |||
| − | + | '''Tujuan:'''  | |
| − | |||
| − | + | Membuat halaman sederhana dengan komponen dinamis menggunakan state dan props.  | |
| − | + | '''Instruksi:'''  | |
| + | * Buat komponen `Header`, `Counter`, dan `Footer`  | ||
| + | * `Counter` memiliki 2 tombol: Tambah & Kurangi  | ||
| + | * `Footer` menampilkan total klik tombol (dikirim dari `App` via props)  | ||
| + | * Gunakan minimal 2 state dan 1 props  | ||
| + | * Jalankan dan screenshot hasilnya  | ||
| − | + | ==Tugas Diskusi (Kelompok)==  | |
| − | + | '''Topik: "State vs Props – Kapan Kita Gunakan Salah Satunya?"'''  | |
| − | + | * Buat presentasi mini 5 menit  | |
| − | + | * Sertakan contoh kode  | |
| − | + | * Bandingkan penggunaan state dan props dalam komponen kompleks (misal: form input, shopping cart, dsb.)  | |
| − | + | ==Referensi==  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * [React Docs – Components and Props](https://react.dev/learn/passing-props-to-a-component)  | |
| − | + | * [React Docs – State: A Component’s Memory](https://react.dev/learn/state-a-components-memory)  | |
| + | * [Vite + React Setup](https://vitejs.dev/guide/)  | ||
| − | |||
| − | + | ==Pranala Menarik==  | |
| − | *  | + | * [[Web Programming]]  | 
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Latest revision as of 10:51, 8 April 2025
Tujuan Pembelajaran:
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
- Memahami konsep komponen dalam framework frontend modern
 - Membedakan antara komponen stateless dan stateful
 - Mengelola state menggunakan React Hooks (`useState`)
 - Membuat interaksi antar komponen menggunakan props dan state
 
Persiapan di Ubuntu 24.04
1. Install Node.js dan npm
sudo apt update sudo apt install nodejs npm -y
2. Verifikasi versi
node -v npm -v
3. Install Vite (alternatif lebih ringan dari create-react-app)
npm create vite@latest nama-proyek -- --template react cd nama-proyek npm install npm run dev
> Proyek React siap dijalankan di `http://localhost:5173`
1. Konsep Komponen
Apa Itu Komponen?
Komponen adalah blok bangunan UI yang dapat digunakan kembali. Dalam React, komponen bisa ditulis sebagai function.
Contoh Komponen Sederhana:
 // File: src/components/Header.jsx
 function Header() {
   return <h1>Selamat Datang di Web Saya</h1>;
 }
 export default Header;
Kemudian digunakan di `App.jsx`:
 import Header from './components/Header';
 
 function App() {
   return (
     <div>
       <Header />
     </div>
   );
 }
2. Mengelola State
Apa Itu State?
State adalah data yang dikelola di dalam komponen yang bisa berubah seiring interaksi user.
Contoh: Counter dengan `useState`
 import { useState } from 'react';
 
 function Counter() {
   const [count, setCount] = useState(0); 
   return ( 
     <div>
       <p>Nilai: {count}</p>
       <button onClick={() => setCount(count + 1)}>Tambah</button>
     </div>
   );
 }
 export default Counter;
3. Mengoper Data dengan Props
Apa Itu Props?
Props (properties) digunakan untuk mengirim data dari satu komponen ke komponen lain.
Contoh Props:
 function Welcome(props) {
   return <h2>Halo, {props.name}!</h2>;
 }
 
 // Di App.jsx
 <Welcome name="Dzaq" />
4. Interaksi antar Komponen
Parent dan Child Component
Misal: `App.jsx` mengelola state dan mengirimkan ke `ChildComponent`
 function Child({ message }) {
   return <p>Pesan dari parent: {message}</p>;
 }
 
 function App() {
   const [msg, setMsg] = useState("Halo Dunia");
 
   return (
     <div>
       <Child message={msg} />
     </div>
   );
 }
Struktur Proyek yang Disarankan
src/ │ ├── components/ │ ├── Header.jsx │ ├── Counter.jsx │ └── Footer.jsx │ ├── App.jsx └── main.jsx
Tugas Praktik Mahasiswa
Tujuan:
Membuat halaman sederhana dengan komponen dinamis menggunakan state dan props.
Instruksi:
- Buat komponen `Header`, `Counter`, dan `Footer`
 - `Counter` memiliki 2 tombol: Tambah & Kurangi
 - `Footer` menampilkan total klik tombol (dikirim dari `App` via props)
 - Gunakan minimal 2 state dan 1 props
 - Jalankan dan screenshot hasilnya
 
Tugas Diskusi (Kelompok)
Topik: "State vs Props – Kapan Kita Gunakan Salah Satunya?"
- Buat presentasi mini 5 menit
 - Sertakan contoh kode
 - Bandingkan penggunaan state dan props dalam komponen kompleks (misal: form input, shopping cart, dsb.)
 
Referensi
- [React Docs – Components and Props](https://react.dev/learn/passing-props-to-a-component)
 - [React Docs – State: A Component’s Memory](https://react.dev/learn/state-a-components-memory)
 - [Vite + React Setup](https://vitejs.dev/guide/)