Apa yang dimaksud dengan Redux?
- Sumber Kebenaran Tunggal - Status aplikasi yang lengkap disimpan dalam satu objek yang disebut store.
- State bersifat Read-Only - Satu-satunya cara untuk mengubah state adalah dengan mengirimkan aksi sehingga perubahan menjadi dapat dilacak.
- Perubahan Dibuat Menggunakan Fungsi Murni - Reducer, yang merupakan fungsi murni, menangani pembaruan state berdasarkan tindakan yang diterima.
![]() |
sumber: buildwithangga.com |
Mengapa Menggunakan Redux?
- Prediktabilitas: Perubahan state terjadi dengan cara yang terkontrol ketat dengan aksi dan reduksi, yang membuat debugging dan mereproduksi bug menjadi lebih mudah.
- Manajemen Status Pusat: semua status aplikasi disimpan dalam satu penyimpanan, sehingga pelacakan aliran data menjadi lebih mudah.
- Debugging yang Lebih Baik: Redux hadir dengan alat pengembang yang sangat baik termasuk debugging perjalanan waktu, yang memungkinkan pengembang untuk memeriksa status sebelumnya dan memutar ulang tindakan.
- Kemudahan Pengujian: Karena reduksi adalah fungsi murni, reduksi dapat dengan mudah diuji.
- Dukungan Middleware: Redux juga mendukung middleware seperti Redux Thunk, Redux Saga, dll. Middleware memungkinkan operasi asinkron seperti panggilan API.
Komponen Inti dari Redux
1. Toko
import { createStore } from 'redux';import rootReducer from './reducers';const store = createStore(rootReducer);
2. Tindakan
Actions - yang merupakan objek JavaScript yang menjelaskan apa yang seharusnya berubah dalam state Actions diharuskan memiliki properti tipe dan secara opsional dapat menyertakan beberapa data muatan tambahan.
const ADD_TODO = 'ADD_TODO';
const addTodo = (text) => {
return {
type: ADD_TODO,
payload: text
};
};
3. Pengurang
Reducers adalah fungsi murni yang menjelaskan bagaimana state harus berubah sebagai respons terhadap aksi. Mereka menerima state dan aksi dan mengeluarkan state baru.
const initialState = { todos: [] };
const todoReducer = (state = initialState, action) => {
switch (action.type) {
case 'ADD_TODO':
return {
...state,
todos: [...state.todos, action.payload]
};
default:
return state;
}
};
4. Mengirimkan Tindakan
Anda mengirimkan aksi dengan fungsi pengiriman yang diberikan oleh toko.
store.dispatch(addTodo('Learn Redux'));
Mengintegrasikan Redux dengan React
Menghubungkan Store dengan Komponen di Aplikasi ReduxReact †. Komponen Provider dan fungsi connect disediakan oleh pustaka react-redux untuk mencapai koneksi ini.
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import todoReducer from './reducers';
import App from './App';
const store = createStore(todoReducer);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Dengan membungkus komponen App dengan Provider, kita dapat memberikan semua komponen yang bersarang akses ke redux store.
Menggunakan Redux Hooks
Redux biasanya menggunakan fungsi connect untuk melakukan hal ini, namun dengan diperkenalkannya hook oleh React, Redux sekarang memiliki hook useSelector dan useDispatch untuk mengelola state tanpa menggunakan fungsi connect.
import { useSelector, useDispatch } from 'react-redux';
const TodoList = () => {
const todos = useSelector(state => state.todos);
const dispatch = useDispatch();
return (
<div>
<ul>
{todos.map((todo, index) => (
<li key={index}>{todo}</li>
))}
</ul>
<button onClick={() => dispatch(addTodo('New Task'))}>Add Task</button>
</div>
);
};
Kesimpulan
Redux adalah sebuah library manajemen state yang kuat yang menyediakan cara yang dapat diprediksi untuk mengelola state aplikasi dalam aplikasi React. Dengan memberlakukan aliran data searah dan memusatkan manajemen state, Redux menyederhanakan debugging, pengujian, dan penskalaan aplikasi. Meskipun Redux mungkin tidak diperlukan untuk proyek-proyek kecil, Redux sangat bermanfaat untuk aplikasi berskala besar dengan interaksi state yang kompleks. Sebagai alternatif, pengembang juga dapat mempertimbangkan Context API bawaan React untuk kebutuhan manajemen state yang lebih sederhana.
Kembali ke>>>> Memahami Manajemen State dalam Aplikasi React