Praktik: Membuat aplikasi daftar tugas sederhana dengan React.js
From OnnoCenterWiki
Jump to navigationJump 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)