Redux dapat digunakan bersamaan dengan VueJs, Angular, React, ataupun JavaScript murni (Vanilla Javascript). Redux membantu dalam menulis aplikasi yang berperilaku yang konsisten, berjalan di lingkungan yang berbeda (klik, server), dan mudah untuk diuji.
Kenapa Redux?
Cara Kerja Redux?
- Dalam project yang besar, biasanya akan terdapat puluhan maupun ratusan Component aplikasi, dan setiap Component memiliki data (State) yang digunakan di banyak Component.
- Sudah tentu akan sangat kompleks jika Anda mengirim state langsung dari komponen dan aplikasi atau project yang sedang Anda buat akan sangat sulit untuk dibaca dan diuji.
- Dari permasalahan diatas Redux hadir untuk melakukan manajemen state.
- Terdapat 4 actor utama dalam system Redux:
- Action
- Store
- Reducer
- State
- App/UI membuat objek Action dan mengirimnya ke Store.
- Oleh Store, objek Action diteruskan ke Reducer yang bertugas melakukan update terhadap State.
- Jika ada pembaharuan State maka Store mengirim objek State yang baru ke semua Bagian App/UI yang menjadi subscriber / listener.
Contoh: State Tanpa Redux
Buatlah halaman aplikasi seperti gambar disamping. Dimana Ketika touchable “Increase” diklik maka angka yang berada ditengah akan ditambah 1. Demikian Ketika touchable “Decrease” diklik maka angka yang berada ditengah akan dikurangi 1. Gunakan State untuk merubah angka. Pembuatan halaman dapat menggunakan Component function atau class.

Buatlah halaman aplikasi seperti gambar disamping. Dimana Ketika touchable “Increase” diklik maka angka yang berada ditengah akan ditambah 1. Demikian Ketika touchable “Decrease” diklik maka angka yang berada ditengah akan dikurangi 1. Gunakan State untuk merubah angka. Pembuatan halaman dapat menggunakan Component function atau class.

Langkah-Langkah dalam menyelesaikan contoh tersebut:
- Buka url https://expo.io/ dan login dengan Account Anda
- Setelah masuk dashboard, klik Snack
- Klik “New Snack” dengan nama “LatihanTanpaRedux”
- Pada file App.js, hapus semua source code yang ada
- Pada Snack ketik perintah seperti yang ditampilkan pada slide berikutnya.
- Ketiklah perintah berikut
Contoh: State Dengan Redux
Buatlah halaman aplikasi seperti gambar disamping. Dimana Ketika touchable “Increase” diklik maka angka yang berada ditengah akan ditambah 1. Demikian Ketika touchable “Decrease” diklik maka angka yang berada ditengah akan dikurangi 1. Gunakan Redux untuk merubah angka. Pembuatan halaman dapat menggunakan Component function atau class.

Langkah-Langkah dalam menyelesaikan contoh tersebut:
- Buka url https://expo.io/ dan login dengan Account Anda
- Setelah masuk dashboard, klik Snack
- Buka file dengan nama “LatihanTanpaRedux”, lalu ganti nama file tersebut dengan “LatihanRedux”
- Buat folder dengan nama “src”
- Buat file dengan nama CounterApp.js pada folder “src”
- Pada file App.js, copy semua source code yang ada, lalu paste pada file CounterApp.js
- Pada file App.js, hapus perintah berikut:
- Pada file App.js, hapus perintah berikut:
- Pada file App.js, hapus perintah berikut:
- Pada file App.js, import file CounterApp.js:
- Pada file App.js, tambahkan Component <CounterApp/> pada return(), sehingga hasil akhirnya seperti dibawah ini:
- Pada file CounterApp.js, ubah: class App menjadi class CounterApp dan export default App menjadi export default CounterApp
- Pada file CounterApp.js, hapus:
- Tampilan default CounterApp.js sebelum ditambahkan redux
- Tampilan default CounterApp.js sebelum ditambahkan redux (lanjutan)
- Buka file App.js,
- import createStore:
- import Provider:
- Tambahkan perintah berikut diatas baris class:
- Tambahkan Component <Provider> pada class
- import connect:
- dibawah pada luar class CounterApp, tambahkan:
- Pada
- ubah menjadi
- Pada
- ubah menjadi
- Pada
- ubah menjadi
- Dibawah function mapStateToProps(state), tambahkan:
- Pada
- ubah menjadi
- Sebagai informasi, component connect harus sudah diimport
Redux membantu dalam menulis aplikasi yang berperilaku yang konsisten, berjalan di lingkungan yang berbeda (klik, server), dan mudah untuk diuji.
Sumber Referensi : reactnative.dev