Skip to content

Konsep dan Alur Rerender Pada ReactJS

Konsep dan Alur Rerender Pada ReactJS
Facebook
Twitter
LinkedIn

Konsep dan Alur Rerender Pada ReactJS | ReactJS adalah sebuah JavaScript library yang digunakan untuk membuat Single Page Application (SPA). SPA memungkinkan website yang kita buat menjadi lebih interaktif dan menarik. Terimakasih kepada virtual DOM yang berperan besar pada proses ini. Sehingga membuat React JS dapat memperbarui DOM tanpa merender ulang (rerender) keseluruhan DOM.

Sebelum mempelajari konsep rerender pada ReactJS, alangkah baiknya kita memahami terlebih dahulu apa itu Virtual DOMVirtual DOM adalah representasi dari DOM (Document Object Model) yang disimpan dalam memori. Ketika kita membangun website dengan ReactJS, sebenarnya kita sedang membuat beberapa abstraksi dari Virtual DOM. Yang kemudian oleh browser akan di-compile untuk menjadi Real DOM yang kemudian disusun dalam DOM tree.

Virtual DOM bekerja dengan melakukan proses yang disebut “diffing”. Proses ini akan membandingkan Virtual DOM lama dengan Virtual DOM baru. Dengan algoritma tersebut ReactJS mampu memperbarui DOM sesuai dengan Virtual DOM yang baru dan hanya memperbarui bagian yang berubah dari Virtual DOM tersebut. Ilustrasinya bisa dilihat dibawah ini.

Konsep dan Alur Rerender Pada ReactJS

Seperti penjelasan sebelumnya, ReactJS hanya akan memperbarui Virtual DOM yang berubah. Oleh karena itu, ReactJS juga hanya akan memperbarui Virtual DOM yang state pada componentnya berubahProses pembaruan sebuah komponen akan memicu komponen yang ada di bawahnya (child component) untuk dirender ulang. Agar lebih jelas, mari kita perhatikan kode berikut.

Kode tersebut merupakan sebuah program counter sederhana. Kita mempunyai tiga komponen yaitu AppCounter , dan Footer. Pada komponen App, terdapat sebuah state yaitu count . Nilai count bisa berubah ketika tombol tambah diklik. Berikut ini adalah tampilan program saat dijalankan.

kotak hijau mengindikasikan component rerender

Ketika tombol tambah diklik, nilaicount berubah karena proses penambahan. Hal ini akan menyebabkan komponen App dirender ulang. Karena pada komponen App terdapat komponen lain yaitu Counterdan Footer , maka komponen tersebut juga akan dirender ulang.

Komponen Counter dirender ulang karena komponen ini memperloleh props dari komponen App . Oleh karena itu, komponen akan dirender ulang untuk menampilkan data terbaru ketika terjadi perubahan. Sedangkan pada komponen Footer , render ulang disebabkan karena komponen tersebut merupakan child component dari App . Render ulang pada komponen Footer tidak akan menampilkan perubahan apapun, sehingga proses render ulangnya tidak begitu berguna (unnecessary rerender).

Unnecsessary rerender pada komponen Footer dapat diatasi dengan dua cara yaitu dengan merubah struktur komponen atau menggunakan React Memo.

Merubah struktur komponen dalam hal ini bertujuan untuk memindahkan state yang awalnya berada pada komponen App menjadi berada pada komponen Counter itu sendiri. Dengan cara seperti ini, maka komponen Counter tidak perlu lagi menggunakan props dari komponen App sehingga saat terjadi perubahan, hanya komponen Counter yang akan dirender ulang. Perhatikan contoh kode berikut.

Ketika dijalankan, maka hasilnya akan tampak seperti berikut ini:

Cara lain untuk mengatasi masalah unnecessary rerender adalah dengan menggunakan React MemoReact Memo adalah komponen tingkat tinggi yang membungkus komponen untuk menyimpan output yang dirender dan menghindari proses render yang tidak perlu. Untuk menggunakan React Memo, Kita hanya perlu membungkus komponen yang terindikasi unnecessary rerender dengan API React.memo. Ketika suatu komponen dibungkus dengan React.memo, maka ia hanya akan dirender ulang jika state atau props komponen tersebut berubah. Berikut adalah implementasi dari React.memo.

Berikut hasilnya setelah program dijalankan.

Komponen Footer tidak dirender ulang meskipun proses render ulang terjadi pada komponen induknya. Hal ini terjadi karena telah kita membungkus komponen Footer dengan React.memo. Sehingga, meskipun komponen App dirender ulang, ia tidak akan memicu komponen Footer untuk dirender ulang selama props atau state-nya tidak berubah.

Konsep dasar yang harus kita pahami adalah tiap komponen pada ReactJS akan dirender ulang (rerender) jika state-nya berubah. Perubahan state ini juga akan memicu komponen di bawahnya dalam susunan component tree untuk ikut dirender ulang (rerender).

Dengan memahami konsep rerender pada React.JS, kita bisa lebih tepat dalam memilih struktur komponen yang akan kita gunakan. Sehingga, kita dapat mengoptimalkan kinerja web yang kita buat.

DOT Indonesia adalah perusahaan teknologi yang berkembang pesat di bidang web, mobile dan blockchain development. Kami sedang mencari individu yang bermotivasi tinggi, mandiri, cerdas dan agile yang siap untuk membuat dampak besar bagi dunia. Tertarik untuk bergabung bersama kami? Yuk, kunjungi website karir DOT Indonesia dan temukan posisi yang sesuai untuk kamu. See you!

Rerender
React
React Memo
Front End Development

 

Baca juga :

Leave a Reply

Your email address will not be published. Required fields are marked *

Let’s Meet & Collaborate

Have question in mind? Come tell us what you need!

Yogyakarta Office

Perusahaan ndalem, Jl. Aman No.20, Kembang Putihan, Guwosari, Kec. Pajangan, Kabupaten Bantul, Daerah Istimewa Yogyakarta 55751

Jepara Office

Jl. Jepara – Bangsri, Krsak, Bangsri, Kec. Bangsri, Kabupaten Jepara, Jawa Tengah 59453