Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to make onclick function in ReactJS

Introduction

When you're learning to code, it's important to learn about event handling. Today, we're going to be talking about one of the most common events in any web application: the click event. In ReactJS, we can make an onClick function that triggers when a user clicks on a certain element.

Before we dive into this topic, let's quickly clarify what ReactJS is. ReactJS is a JavaScript library, widely used for building user interfaces, especially for single-page applications. It allows developers to create reusable UI components.

Event Handling in ReactJS

Event handling in React is very similar to handling events on DOM elements in plain JavaScript. However, there are some syntax differences. In HTML, the event name is in all lowercase (for example, onclick), but in React it uses camelCase (for example, onClick).

So what is event handling? Imagine you're at a party (your application), and you're the host (the JavaScript runtime environment). Each guest (event) at your party can perform an action - they can wave at you, start a conversation, or maybe even do a little dance. As the host, you decide how to respond to these actions - you might wave back, engage in conversation, or join the dance. These responses are what we call event handlers.

Creating an onClick Function in ReactJS

Let's look at how we can create an onClick function in ReactJS. Here's an example code of a simple button with an onClick event:

class Example extends React.Component {
  handleClick() {
    console.log('Button clicked');
  }

  render() {
    return (
      <button onClick={this.handleClick}>
        Click me
      </button>
    );
  }
}

In the example above, we've created a React component called Example. Inside this component, we've defined a function called handleClick. This function is our event handler, and it will be executed when the button is clicked. The console.log('Button clicked') line will print the text "Button clicked" to the browser's console whenever the button is clicked.

Breaking Down the Code

Let's break down what's happening in the code above:

class Example extends React.Component: Here, we are defining a new class Example that extends (inherits from) React.Component. This means Example is a React component and it can use the methods and properties of React.Component.

handleClick() {...}: This is a method of our Example class. This method will do whatever we want it to do when our button is clicked. In our case, it's printing a message to the console.

render() {...}: The render method tells React what to display on the screen. It returns a description of what you want to see on the UI.

<button onClick={this.handleClick}>: Here, we are creating a button and attaching our handleClick function to the button's onClick event. When the button gets clicked, it will run the handleClick function.

The Importance of this in ReactJS

In our handleClick function, we used this. this is a special keyword in JavaScript that refers to the context in which a function is called. In our case, this refers to our Example class.

But there's a catch. In JavaScript, class methods are not bound by default. If we try to invoke this within handleClick, it will be undefined. This is a peculiar behavior of JavaScript. To solve this, we need to bind this in the constructor like so:

class Example extends React.Component {
  constructor(props) {
    super(props);

    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    console.log('Button clicked');
  }

  render() {
    return (
      <button onClick={this.handleClick}>
        Click me
      </button>
    );
  }
}

In the code above, we've added a constructor where we're binding this to the handleClick function. Now, this within handleClick will correctly refer to our Example class.

Conclusion

That's pretty much it on how to create an onClick function in ReactJS. ReactJS uses a synthetic event system which enables the event system to be consistent across different browsers and environments. The onClick function is a part of this synthetic event system.

Remember, practice makes perfect. The more you work with ReactJS and its event handling system, the more comfortable you'll become. Happy coding!