Sebagai salah satu library JavaScript yang paling sering digunakan untuk antarmuka pengguna, penanganan event pada React merupakan fitur inti yang harus dikuasai oleh setiap pengembang React. Penanganan event dalam react sangat penting untuk membangun aplikasi web interaktif, karena dengan adanya penanganan event, pengembang dapat merespon aksi pengguna seperti klik, form submit, atau input dari keyboard.
Memahami Penanganan Peristiwa di React
sumber: iltekkomputer.com |
Fitur-fitur penting dari React Events
- Event Sintetis: React membungkus native event ke dalam SyntheticEvent-nya sendiri. Di sisi lain, Anda dapat mengaksesnya tanpa instalasi pada browser apapun, dengan cara yang sama.
- Penamaan camelCase: Jika pada event native DOM kita menulis jenis event seperti onclick, pada React, penangan event ditulis sebagai camelCase. Onclick misalnya pada post di DOM onClick di React.
- Pengikatan Event: Di React, event handler terikat pada komponen dimana event handler tersebut didefinisikan, sehingga tidak perlu melakukan binding secara manual pada sebagian besar kasus.
Menambahkan Event Handler di React
Penangan Peristiwa Sebaris (Inline Event Handlers)
function App() {return (<button onClick={() => alert('Button clicked!')}>Click Me</button>);}
Metode sebagai Penangan Peristiwa
class App extends React.Component {handleClick() {console.log('Button clicked!');}render() {return (<button onClick={this.handleClick}>Click Me</button>);}}
Event Handler dan Fungsi Panah
class App extends React.Component {handleClick() {console.log('Button clicked!');}render() {return (<button onClick={this.handleClick}>Click Me</button>);}}
Melewatkan Argumen dalam Event Handler
function App() {const handleClick = (message) => {alert(message);};return (<button onClick={() => handleClick('Hello, World!')}>Click Me</button>);}
Penyatuan Event di React
React sebenarnya mengumpulkan objek-objek SyntheticEvent ini untuk alasan performa. Maksudnya adalah objek event akan digunakan kembali untuk keuntungan performa. Tetapi ini juga berarti bahwa objek event akan dibatalkan setelah event handler berjalan.
Jika Anda menggunakan event untuk operasi asinkronisasi, gunakan event untuk menahannya. persist():
function App() {
const handleClick = (event) => {
event.persist();
setTimeout(() => {
console.log(event.type); // Works even after a delay
}, 1000);
};
return <button onClick={handleClick}>Click Me</button>;
}
Event yang Umum Digunakan di React
React menyediakan dukungan untuk beberapa event, termasuk tetapi tidak terbatas pada:
- Kejadian pada mouse: onClick, onDoubleClick, onMouseEnter, onMouseLeave
- Peristiwa Keyboard: onKeyDown, onKeyPress, onKeyUp
- Peristiwa Formulir: onChange, onSubmit, onFocus, onBlur
- Kejadian Sentuh: onTouchStart, onTouchEnd, onTouchMove
Praktik Terbaik untuk Penanganan Acara
- Jaga agar event handler tetap ringan: Hindari menulis logika yang rumit di dalam event handler; sebagai gantinya, gunakan fungsi atau utilitas untuk menyederhanakannya
- Tidak ada Logika Sebaris: Logika sebaris memang nyaman, namun menambah kerumitan yang sulit di-debug dan mengganggu keterbacaan.
- Mengoptimalkan Kinerja: Gunakan teknik memoisasi seperti useCallback untuk komponen fungsional untuk mencegah render ulang yang tidak perlu.
- Penanganan kejadian yang mudah diakses: Pastikan penangan peristiwa Anda dapat digunakan oleh pengguna keyboard dan pembaca layar untuk meningkatkan aksesibilitas.