Bedanya Redux biasa dan Redux Toolkit, mana yang lebih praktis buat kita?

Bedanya Redux biasa dan Redux Toolkit, mana yang lebih praktis buat kita?
Photo by Bernd 📷 Dittrich/Unsplash

Pernah gak sih kita ngerasa pusing tujuh keliling cuma gara gara mau mengatur state aplikasi React yang makin lama makin melar? Kita pasti pernah mengalami momen manis ketika membuat aplikasi kecil lalu tiba tiba aplikasi tersebut berkembang menjadi raksasa dengan puluhan komponen. Saat itulah kita sadar bahwa mentransfer data antar komponen menggunakan prop drilling adalah sebuah mimpi buruk. Redux hadir sebagai pahlawan untuk menyelesaikan masalah state management yang rumit ini. Namun perjalanan kita bersama Redux klasik ternyata tidak selamanya mulus dan indah.

Banyak developer yang mengeluh karena harus menulis baris kode yang sangat panjang hanya untuk menambahkan satu fitur sederhana. Rumitnya setup awal serta banyaknya file yang harus kita buat sering kali bikin semangat koding jadi drop di tengah jalan. Nah beruntung sekali sekarang ada Redux Toolkit yang hadir menawarkan kesederhanaan dan kenyamanan baru. Dalam artikel ini kita bakal bedah tuntas perbedaan mendasar antara Redux biasa dan Redux Toolkit serta mencari tahu mana yang paling praktis untuk alur kerja kita sehari hari.

Berkenalan Kembali Dengan Redux Dan Tantangan Klasiknya

Sebelum kita melompat lebih jauh membahas versi toolkit ada baiknya kita menyegarkan ingatan tentang apa itu Redux biasa. Pada dasarnya Redux adalah sebuah pustaka manajemen state terpusat yang sangat populer di ekosistem JavaScript khususnya React. Redux bekerja dengan alur data satu arah yang sangat terprediksi. Semua state disimpan dalam satu tempat utama yang kita sebut sebagai store. Ketika ada perubahan data komponen akan mengirimkan action lalu reducer akan memproses action tersebut untuk menghasilkan state yang baru.

Arsitektur Redux biasa sebenarnya sangat solid dan terstruktur. Keunggulan utamanya adalah kepastian alur data yang membuat aplikasi kita mudah diuji dan divalidasi. Namun di balik kehebatannya Redux klasik menyimpan tantangan tersendiri yang sering membuat para pengembang merasa kelelahan. Kita harus menyiapkan action types action creators reducer dan store secara terpisah. Struktur file yang terpisah pisah ini menuntut kita untuk bolak balik antar berkas hanya untuk mengubah satu alur logika sederhana.

Tantangan utama dari Redux biasa adalah jumlah boilerplate code yang sangat melimpah. Boilerplate code ini adalah potongan kode standar yang wajib kita tulis berulang kali meskipun fungsinya sederhana. Bagi kita yang mengutamakan kecepatan pengembangan dan efisiensi waktu hal ini jelas terasa kurang efektif. Belum lagi konfigurasi awal store yang membutuhkan beberapa pustaka tambahan seperti Redux Thunk untuk menangani proses asynchronous. Tantangan teknis inilah yang akhirnya mendorong tim pengembang Redux untuk menciptakan solusi yang lebih modern.

Penyelamat Bernama Redux Toolkit Yang Bikin Coding Lebih Santai

Melihat keluhan komunitas yang merindukan cara koding lebih ringkas tim inti Redux akhirnya merilis Redux Toolkit atau yang sering kita singkat sebagai RTK. Redux Toolkit dirancang resmi sebagai standar baru dalam menulis logika Redux. Kehadirannya bukan untuk menggantikan konsep dasar Redux melainkan untuk membungkus Redux biasa agar jauh lebih mudah digunakan tanpa menghilangkan kekuatan aslinya.

Menggunakan Redux Toolkit rasanya seperti beralih dari mobil manual yang serba rumit ke mobil modern dengan transmisi otomatis yang sangat responsif. Semua fungsi mendasar yang kita butuhkan sudah dikemas rapi dalam paket yang siap pakai. Kita tidak perlu lagi menginstal berbagai pustaka terpisah hanya untuk menangani middleware atau alat penguji state. Semuanya sudah tersedia secara langsung saat kita menginstal paket ini.

Dengan Redux Toolkit pengalaman koding kita terasa jauh lebih menyenangkan dan asik. Kita bisa berfokus pada logika bisnis aplikasi tanpa harus terdistraksi oleh aturan penulisan kode yang berbelit belit. Pengikatan arsitektur yang lebih segar ini terbukti mampu memangkas baris kode secara signifikan. Hasilnya struktur proyek kita menjadi jauh lebih rapi gampang dibaca dan pastinya lebih mudah dirawat dalam jangka panjang.

Perbandingan Head To Head Redux Biasa Versus Redux Toolkit

Agar kita memiliki gambaran yang semakin jelas mari kita bandingkan kedua pendekatan ini dari berbagai sudut pandang praktis dalam pengembangan perangkat lunak.

Urusan Boilerplate Code Dan Konfigurasi Store

Perbedaan paling mencolok yang langsung terasa oleh kita terletak pada jumlah baris kode yang harus ditulis. Pada Redux biasa konfigurasi store membutuhkan beberapa langkah terpisah seperti mengimpor createStore mengombinasikan reducer serta menambahkan middleware secara manual. Kita harus menulis kode yang relatif panjang hanya untuk menyiapkan wadah utama penampung state.

Sebaliknya Redux Toolkit menyediakan fungsi configureStore yang sangat pintar. Fungsi ini secara otomatis menggabungkan reducer kita menyelaraskan middleware default dan bahkan menyalakan fitur Redux DevTools tanpa konfigurasi tambahan yang ribet. Cukup dengan satu panggilan fungsi store aplikasi kita sudah siap digunakan dengan pengaturan standar industri terbaik.

Manajemen Action Dan Reducer Yang Lebih Ringkas

Dalam Redux klasik kita terbiasa memisahkan antara konstanta action type fungsi action creator dan fungsi reducer. Pendekatan pola ini membuat kita harus mengelola tiga hal berbeda untuk satu perubahan state saja. Pola penulisan switch case di dalam reducer juga rawan menciptakan bug jika kita lupa menangani kondisi default.

Redux Toolkit menyederhanakan masalah ini lewat konsep yang dinamakan createSlice. Fungsi ajaib ini memungkinkan kita untuk mendefinisikan nama slice state awal dan sekumpulan fungsi reducer dalam satu tempat sekaligus. Secara otomatis Redux Toolkit akan membuatkan action creator dan action type berdasarkan nama fungsi reducer yang kita tulis. Pendekatan ini membuat kode kita menjadi sangat padat efisien dan mudah dipahami.

Immutability Dan Penggunaan Immer Secara Bawaan

Salah satu aturan emas dalam Redux adalah kita tidak boleh mengubah state secara langsung atau meretas mutasi object. Pada Redux biasa kita wajib menggunakan teknik copy object seperti spread operator atau Object assign untuk memperbarui data. Jika kita memiliki nested object yang dalam penulisan kode spread operator bisa menjadi sangat rumit dan rentan timbul kesalahan fatal.

Di sinilah keajaiban Redux Toolkit bekerja. RTK mengintegrasikan pustaka Immer secara internal di dalam fungsi createSlice. Artinya kita diizinkan menulis kode mutasi yang terkesan langsung seperti mengubah properti object atau mendorong elemen baru ke dalam array. Di balik layar Immer akan menerjemahkan kode intuitif tersebut menjadi operasi immutable yang aman. Pengalaman koding kita pun terasa jauh lebih alami seperti menulis JavaScript biasa.

Penanganan Async Logic Dan Middleware

Membuat permintaan data dari server atau API selalu menjadi bagian tak terpisahkan dari aplikasi modern. Pada Redux klasik kita harus mengonfigurasi middleware eksternal seperti Redux Thunk secara manual kemudian membuat beberapa action type terpisah untuk kondisi pending success dan error.

Redux Toolkit menyederhanakan proses async ini dengan menyediakan fungsi createAsyncThunk. Fungsi ini mengurus pembuatan action types untuk setiap tahap siklus permintaan API secara otomatis. Kita cukup fokus menulis fungsi fetcher data dan menangani hasilnya di dalam builder extraReducers. Proses pengambilan data dari backend menjadi sangat terstruktur dan konsisten di seluruh bagian aplikasi kita.

Mengapa Redux Toolkit Lebih Praktis Buat Pengembangan Aplikasi Modern

Ketika kita berbicara tentang kepraktisan keputusannya sangat berpihak pada Redux Toolkit. Ada beberapa alasan kuat mengapa Redux Toolkit menjadi opsi paling rasional untuk proyek pengembangan aplikasi masa kini.

Pertama efisiensi waktu kerja kita meningkat sangat drastis. Berkat pengurangan boilerplate code kita bisa menyelesaikan pembuatan fitur baru dalam waktu yang lebih singkat. Penulisan kode yang lebih sedikit juga berarti memperkecil peluang terjadinya bug akibat kesalahan ketik atau kelalaian teknis.

Kedua pemeliharaan kode menjadi sangat mudah. Ketika ada pengembang baru yang bergabung dalam tim kita mereka tidak akan kesulitan memahami alur data aplikasi karena Redux Toolkit memaksakan struktur standar yang konsisten. Semua logika state berada dalam slice yang teratur sehingga proses debugging berjalan lebih cepat dan asik.

Ketiga Redux Toolkit datang bersama RTK Query sebuah fitur canggih untuk fetching data dan caching. Fitur ini mengeliminasi kebutuhan kita untuk menulis kode penarik data API secara manual. Cukup dengan mendefinisikan endpoint RTK Query akan secara otomatis mengelola data caching status loading serta penyegaran data di latar belakang. Efisiensi ini benar benar mengubah cara kita berinteraksi dengan API di sisi frontend.

Kapan Kita Masih Membutuhkan Redux Biasa Atau Harus Langsung Ke Toolkit

Meskipun Redux Toolkit menawarkan begitu banyak kemudahan apakah masih ada alasan untuk menggunakan Redux biasa? Pertanyaan ini sering muncul ketika kita hendak memulai proyek baru atau mengevaluasi kode yang sudah ada.

Jika kita membangun aplikasi dari nol atau memulai proyek baru hari ini sangat disarankan untuk langsung memakai Redux Toolkit. Tidak ada alasan kuat untuk memulai proyek baru menggunakan Redux biasa yang serba manual. Bahkan dokumentasi resmi Redux sendiri secara tegas merekomendasikan Redux Toolkit sebagai cara standar untuk menulis seluruh logika Redux.

Satu satunya kondisi di mana kita mungkin masih berurusan dengan Redux biasa adalah saat merawat aplikasi lama atau legacy project yang dibangun beberapa tahun lalu. Pada situasi tersebut mengubah seluruh basis kode dari Redux biasa ke Redux Toolkit secara mendadak bisa memakan biaya pengujian yang cukup besar. Namun jika ada kesempatan untuk melakukan refactoring bertahap memperbarui kode lama ke versi toolkit adalah langkah investasi yang sangat bijak.

Tips Praktis Memulai Migrasi Dan Belajar Redux Toolkit

Bagi kita yang ingin berpindah dari Redux klasik ke Redux Toolkit atau baru pertama kali belajar berikut adalah beberapa langkah praktis yang bisa kita terapkan agar proses transisi berjalan lancar.

Langkah pertama adalah mulailah dengan memahami konsep Slice. Jangan mencoba mengalihkan seluruh store sekaligus dalam satu waktu. Pilih satu fitur sederhana pada aplikasi kita lalu buatlah Slice pertamanya menggunakan createSlice. Pelajari bagaimana reducer dan action menyatu dalam satu berkas tersebut.

Langkah kedua atur ulang konfigurasi store aplikasi kita. Gantikan penggunaan createStore lama dengan configureStore dari Redux Toolkit. Rasakan betapa bersihnya berkas konfigurasi store kita karena middleware dan DevTools sudah terpasang secara otomatis tanpa kerumitan.

Langkah ketiga manfaatkan kekuatan Immer dengan percaya diri. Kita tidak perlu lagi merasa takut saat memperbarui state berbentuk array atau object bersarang. Tulis saja perubahan state secara langsung di dalam fungsi reducer Slice dan biarkan Redux Toolkit yang bekerja menjaganya tetap immutable.

Langkah keempat coba eksplorasi fitur RTK Query untuk menangani komunikasi API. Setelah terbiasa dengan logika dasar Redux Toolkit pemanfaatan RTK Query akan membuat penulisan kode pengambilan data terasa sangat ringan dan menyenangkan.

Kesimpulan Mana Yang Paling Pas Buat Proyek Kita

Setelah melihat perbandingan mendalam di atas jawaban atas pertanyaan mana yang lebih praktis buat kita sudah sangat jelas. Redux Toolkit adalah pemenang mutlak dalam hal efisiensi kemudahan penggunaan serta kerapian struktur kode. Redux Toolkit berhasil membuang semua kerumitan Redux biasa tanpa merusak keandalan arsitektur dasarnya.

Dengan mengadopsi Redux Toolkit alur kerja koding kita menjadi jauh lebih asik efisien dan modern. Kita bisa memfokuskan energi kita untuk merancang pengalaman pengguna yang hebat daripada terjebak dalam penulisan kode boilerplate yang membosankan. Jadi tidak ada alasan untuk ragu lagi mari kita gunakan Redux Toolkit dalam proyek aplikasi kita selanjutnya.