Pengenalan ReactJS 04
Pengenalan ReactJS 04
Di bawah ini adalah beberapa contoh implementasi praktis dari berbagai aspek dalam
aplikasi React, seperti manajemen state, routing, dan komunikasi dengan API.
Mari kita buat contoh sederhana untuk menampilkan daftar tugas (to-do list) dengan
kemampuan menambah dan menghapus item. Kita akan menggunakan `useState` untuk
mengelola state dari daftar tugas ini.
```javascript
function TodoApp() {
setInput('');
};
};
return (
<div>
<h1>To-Do List</h1>
<ul>
{tasks.map(task => (
<li key={task.id}>
</li>
))}
</ul>
</div>
);
```
- Mengelola state daftar tugas (`tasks`) dan input pengguna (`input`) menggunakan
`useState`.
Misalnya kita ingin membuat aplikasi sederhana dengan beberapa halaman, seperti
"Home" dan "About". Kita dapat menggunakan **React Router** untuk menavigasi
antara halaman ini.
```javascript
function Home() {
return <h2>Home Page</h2>;
function About() {
function App() {
return (
<Router>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
<Switch>
</Switch>
</Router>
);
```
- `Switch` dan `Route` menentukan rute spesifik dan halaman yang sesuai.
#### 3. Pengambilan Data dari API dengan useEffect
Kita akan mengambil data dari API menggunakan **Axios** di dalam komponen dan
menampilkan hasilnya menggunakan `useEffect`. Berikut adalah contohnya:
```javascript
function DataFetcher() {
useEffect(() => {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(response => {
setData(response.data);
setLoading(false);
})
}, []);
return (
<div>
<h1>Posts</h1>
<ul>
{data.map(post => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
```
Di sini:
- `data` disimpan di state dan ditampilkan sebagai daftar setelah data berhasil diambil.
Misalkan kita ingin membuat tema light dan dark untuk aplikasi yang dapat diakses oleh
berbagai komponen. Kita bisa melakukannya dengan **Context API**.
```javascript
return (
{children}
</ThemeContext.Provider>
);
}
function ThemedComponent() {
return (
<div style={{ background: theme === 'light' ? '#fff' : '#333', color: theme === 'light' ?
'#000' : '#fff' }}>
</div>
);
function App() {
return (
<ThemeProvider>
<ThemedComponent />
</ThemeProvider>
);
```
Di sini:
**Formik** dan **Yup** adalah library yang sangat membantu untuk menangani form
dan validasinya.
```javascript
function SignupForm() {
initialValues: {
name: '',
email: '',
},
validationSchema: Yup.object({
}),
},
});
return (
<form onSubmit={formik.handleSubmit}>
<label>
Name:
</label>
<label>
Email:
</label>
<button type="submit">Submit</button>
</form>
);
```
Di sini:
```javascript
fireEvent.click(button);
expect(screen.getByText(/learn testing/i)).toBeInTheDocument();
});
```