Praktik: Membuat aplikasi daftar tugas sederhana dengan React.js
Jump to navigation
Jump to search
Tujuan Pembelajaran:
Setelah menyelesaikan praktik ini, mahasiswa mampu:
- Membuat proyek React.js menggunakan Vite
- Mengelola state untuk data dinamis
- Menggunakan form dan event handling
- Menghapus dan menambahkan data secara dinamis
Persiapan Awal
1. Install Node.js dan npm
sudo apt update sudo apt install nodejs npm -y
2. Cek versi:
node -v npm -v
Inisialisasi Proyek React
3. Buat Proyek Baru dengan Vite
npm create vite@latest todo-app -- --template react cd todo-app npm install npm run dev
Akses di browser: `http://localhost:5173`
Struktur Proyek Dasar
Buat folder `components` di `src`:
mkdir src/components
1. Buat Komponen Tambah Tugas (`AddTask.jsx`)
// src/components/AddTask.jsx import { useState } from "react"; function AddTask({ onAdd }) { const [text, setText] = useState(""); const handleSubmit = (e) => { e.preventDefault(); if (text.trim() === "") return; onAdd(text); setText(""); }; return ( <form onSubmit={handleSubmit}> <input type="text" placeholder="Tulis tugas..." value={text} onChange={(e) => setText(e.target.value)} /> <button type="submit">Tambah</button> </form> ); } export default AddTask;
2. Buat Komponen Daftar Tugas (`TaskList.jsx`)
// src/components/TaskList.jsx function TaskList({ tasks, onDelete }) { return ( <ul> {tasks.map((task, index) => ( <li key={index}> {task} <button onClick={() => onDelete(index)}>Hapus</button> </li> ))} </ul> ); } export default TaskList;
3. Kelola State di `App.jsx`
// src/App.jsx import { useState } from "react"; import AddTask from "./components/AddTask"; import TaskList from "./components/TaskList"; function App() { const [tasks, setTasks] = useState([]); const addTask = (text) => { setTasks([...tasks, text]); }; const deleteTask = (index) => { const newTasks = tasks.filter((_, i) => i !== index); setTasks(newTasks); }; return ( <div> <h1>Daftar Tugas</h1> <AddTask onAdd={addTask} /> <TaskList tasks={tasks} onDelete={deleteTask} /> </div> ); } export default App;
4. Styling Sederhana (Opsional)
Tambahkan ke `src/index.css` atau `App.css`:
body { font-family: Arial, sans-serif; padding: 2rem; background: #f0f0f0; } input { padding: 0.5rem; margin-right: 0.5rem; } button { padding: 0.5rem; background: #007bff; color: white; border: none; cursor: pointer; }
5. Fitur Tambahan (Opsional untuk Mahasiswa Lebih Lanjut)
- Tambahkan fitur checklist (tugas selesai)
- Simpan data ke `localStorage`
- Gunakan UUID untuk key unik
- Tambahkan validasi lebih lanjut (panjang teks minimal, dsb.)
Tugas Mahasiswa
Praktik Mandiri
- Buat aplikasi daftar tugas berdasarkan template ini
- Tambahkan fitur tambahan:
- Centang tugas selesai (opsional)
- Simpan ke `localStorage` (opsional)
Laporan Praktik
- Screenshot hasil aplikasi
- Penjelasan singkat bagaimana state dan props digunakan
- Upload project ke GitHub dan lampirkan link
Referensi
- [React – Official Docs](https://react.dev/)
- [Vite + React Setup](https://vitejs.dev/guide/)
- [MDN JavaScript Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript)