You know that one moment when your ex dumped you and you were like "damn, nothing's working anymore"?
Well, in React, when nothing's working — it's not your ex, it's usually your event not firing.
That's right. Because in React, every interaction — click, type, hover, submit — is an event.
Let's understand what events are in React and how to manage them like a pro.
💥 What is an Event in React?
An event is any user action — like clicking a button, typing in an input, or hovering over a div — that triggers something.
If your app feels interactive, it's because you're handling events under the hood.
From wedding planning to UI buttons — every action needs an event manager. In React, that's you.

🔍 Real Examples of React Events
1. onClick
<button onClick={() => alert("Clicked!")}>Click Me</button>
2. onChange
<input type="text" onChange={(e) => console.log(e.target.value)} />
3. onSubmit
<div onSubmit={(e) => { e.preventDefault(); alert("Submitted!") }}>
<button type="submit">Submit</button>
</div>
4. onMouseEnter
<div onMouseEnter={() => console.log("Hovered!")}>Hover me</div>
5. onKeyDown / onKeyUp
<input onKeyDown={(e) => console.log("Key Down:", e.key)} />
<input onKeyUp={(e) => console.log("Key Up:", e.key)} />
🎯 How React Handles Events (Unlike Vanilla JS)
React wraps native browser events in a thing called SyntheticEvent — a cross-browser wrapper. You get access to all the usual stuff like target, value, key, etc., but with better performance and compatibility.
🧠 1. Adding Event Handlers in React
const MyComponent = () => {
const handleClick = () => {
console.log("Button clicked!");
};
return <button onClick={handleClick}>Click</button>;
};
❌ onClick={handleClick()} triggers immediately
✅ onClick={handleClick} is correct
🧠 2. Reading Props Inside an Event Handler
const Button = ({ label }) => {
const handleClick = () => {
alert(`Button says: ${label}`);
};
return <button onClick={handleClick}>{label}</button>;
};
✅ You can read props directly inside event handlers.
🧠 3. Passing Event Handlers as Props
const Button = ({ onClick }) => {
return <button onClick={onClick}>Click Me</button>;
};
const App = () => {
const handleClick = () => {
alert("Handled in App component!");
};
return <Button onClick={handleClick} />;
};
Now the child triggers the parent's logic — classic React pattern.
🧠 4. Naming Event Handler Props (Clean API Design)
const Modal = ({ onClose, onConfirm }) => (
<>
<button onClick={onClose}>Cancel</button>
<button onClick={onConfirm}>Confirm</button>
</>
);
🧼 Prefix custom event handlers with "on" — it's a good convention.
🧩 Common React Event Pitfalls (and Fixes)
| Mistake | What Happens | Fix |
|---|---|---|
onClick={myFunc()} |
Fires immediately on render | Use onClick={myFunc} |
Not calling e.preventDefault() |
Form submits & reloads page | Call e.preventDefault() |
| Too many anonymous inline functions | Performance drops on re-renders | Use named handlers outside JSX |
Forgetting the e parameter |
Event object is undefined | Use (e) => {} syntax |
✅ Summary – What You Need to Know About Events in React
- Events are how users interact with your app
- Use handlers like
onClick,onChange,onSubmit,onKeyDown,onMouseEnter - Write clean, reusable handlers and pass them as props if needed
- Always remember: in React, you're the event manager 🧑💻
Questions I Get About React Event Handling
1. What is an event in React?
It's any interaction by the user — click, key press, hover — captured and handled by your component.
2. What's the difference between React event and DOM event?
React uses SyntheticEvent — a cross-browser wrapper for native DOM events.
3. Can I pass arguments to an event handler?
onClick={() => handleClick(id)}
4. How do I stop form submission?
Call event.preventDefault() inside your onSubmit handler.
5. Should I define handlers inside or outside JSX?
Prefer defining them outside JSX, especially if reused — it's cleaner and better for performance.