React6 min read

React Events

Handle user interactions like clicks, keyboard input, and form submissions in React.

Sarah Johnson
December 20, 2025
0.0k0

React Events let your app respond to user actions - clicks, typing, hovering, and more!

What are Events?

Events happen when users interact with your app:

  • Click a button
  • Type in an input
  • Hover over an image
  • Submit a form

React makes handling these super easy!

Click Events

The most common event is onClick:

function ClickButton() {
  const handleClick = () => {
    alert('Button clicked!');
  };

  return <button onClick={handleClick}>Click Me</button>;
}

Shorter Version

<button onClick={() => alert('Clicked!')}>
  Click Me
</button>

Common Events

onClick - Button Clicks

function App() {
  return (
    <button onClick={() => console.log('Clicked!')}>
      Click Me
    </button>
  );
}

onChange - Input Changes

function SearchBox() {
  const handleChange = (event) => {
    console.log('User typed:', event.target.value);
  };

  return (
    <input
      type="text"
      onChange={handleChange}
      placeholder="Search..."
    />
  );
}

onSubmit - Form Submit

function LoginForm() {
  const handleSubmit = (event) => {
    event.preventDefault(); // Don't reload page
    console.log('Form submitted!');
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" />
      <button type="submit">Login</button>
    </form>
  );
}

onMouseEnter & onMouseLeave - Hover

function HoverCard() {
  return (
    <div
      onMouseEnter={() => console.log('Mouse entered')}
      onMouseLeave={() => console.log('Mouse left')}
    >
      Hover over me!
    </div>
  );
}

Events with State

Events usually update state:

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>
        Increase
      </button>
      <button onClick={() => setCount(count - 1)}>
        Decrease
      </button>
      <button onClick={() => setCount(0)}>
        Reset
      </button>
    </div>
  );
}

Passing Arguments to Event Handlers

Sometimes you need to pass data to your event handler:

function ButtonList() {
  const handleClick = (buttonName) => {
    alert(`You clicked ${buttonName}`);
  };

  return (
    <div>
      <button onClick={() => handleClick('Button 1')}>
        Button 1
      </button>
      <button onClick={() => handleClick('Button 2')}>
        Button 2
      </button>
    </div>
  );
}

Getting Input Values

function NameInput() {
  const [name, setName] = useState('');

  const handleChange = (event) => {
    setName(event.target.value);
  };

  return (
    <div>
      <input
        type="text"
        value={name}
        onChange={handleChange}
      />
      <p>Hello, {name}!</p>
    </div>
  );
}

Preventing Default Behavior

Some events have default behavior (like form submission reloading the page). Prevent it with event.preventDefault():

function ContactForm() {
  const handleSubmit = (event) => {
    event.preventDefault();
    console.log('Form submitted without page reload!');
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="email" placeholder="Your email" />
      <button type="submit">Send</button>
    </form>
  );
}

Complete Example - Todo Input

function TodoInput() {
  const [task, setTask] = useState('');
  const [todos, setTodos] = useState([]);

  const handleSubmit = (event) => {
    event.preventDefault();
    if (task.trim()) {
      setTodos([...todos, task]);
      setTask(''); // Clear input
    }
  };

  return (
    <div>
      <form onSubmit={handleSubmit}>
        <input
          value={task}
          onChange={(e) => setTask(e.target.value)}
          placeholder="Add a task"
        />
        <button type="submit">Add</button>
      </form>
      <ul>
        {todos.map((todo, index) => (
          <li key={index}>{todo}</li>
        ))}
      </ul>
    </div>
  );
}

Event Naming Convention

React events use camelCase (not lowercase):

  • onclick (HTML)

  • onClick (React)

  • onchange

  • onChange

Remember

  • Events respond to user actions
  • Use onClick for button clicks
  • Use onChange for inputs
  • Use onSubmit for forms
  • Use event.preventDefault() to stop default behavior
  • Combine events with state for interactive apps

Next: Learn React Lists - Display arrays of data!

#React#Events#onClick#Beginner