Event handling in React is similar to handling events on DOM elements. However, there are a few key differences and best practices to keep in mind.
1. Event Handling Syntax
In React, events are named using camelCase, rather than lowercase. For example:
'onclick'
becomes'onClick'
'onchange'
becomes'onChange'
2. Event Handlers
Event handlers are passed as functions rather than strings. For example:
3. Synthetic Events
React uses a system called Synthetic Events to handle events. Synthetic events are wrappers around the browser’s native event system, providing a consistent API across different browsers.
4. Handling Events
Here’s a simple example of handling a click event in a React component:
import React from 'react';
class MyComponent extends React.Component {
handleClick = () => {
alert('Button clicked!');
}
render() {
return (
);
}
}
export default MyComponent;
5. Passing Arguments to Event Handlers
If you need to pass arguments to an event handler, you can use an arrow function:
import React from 'react';
class MyComponent extends React.Component {
handleClick = (param) => {
alert(`Button clicked with param: ${param}`);
}
render() {
return (
);
}
}
export default MyComponent;
6. Event Pooling
React reuses the SyntheticEvent object for performance reasons. If you need to access the event asynchronously, you should call event.persist():
import React from 'react';
class MyComponent extends React.Component {
handleClick = (event) => {
event.persist();
setTimeout(() => {
alert(event.type); // Accessing event type asynchronously
}, 1000);
}
render() {
return (
);
}
}
export default MyComponent;
7. Common Events
Some common events you might handle in React include:
- onClick
- onChange
- onSubmit
- onMouseEnter
- onMouseLeave
- onKeyDown
- onKeyUp
React’s event handling system is straightforward and provides a consistent way to manage user interactions across different browsers. By understanding and utilizing Synthetic Events, you can effectively handle events in your React applications.