React's Synthetic Event system is an optimization that manages events in a consistent, cross-browser way. It wraps native browser events, providing a uniform API that works the same across different browsers. This system helps ensure that event handling is efficient and straightforward for developers, regardless of the browser being used.
Synthetic Event: Provides a consistent, cross-browser API for handling events.
Event Pooling: Reuses event objects to save memory, but requires event.persist() for async usage.
Event Persistence: Keeps the event object alive for asynchronous operations by calling event.persist().
import React, { useState } from 'react';
function InputLogger() {
const [value, setValue] = useState('');
function handleChange(event) {
// Log the event type and input value
console.log(event.type, event.target.value);
// Persist the event to use it asynchronously
event.persist();
setTimeout(() => {
// Access the persisted event's properties after 1 second
console.log('After timeout:', event.type, event.target.value);
}, 1000);
}
return (
<input type="text" onChange={handleChange} value={value} onChange={(e) => setValue(e.target.value)} />
);
}
export default InputLogger;