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/)