JIYIK CN >

Current Location:Home > Learning > WEB FRONT-END > React >

Expected `onClick` listener to be a function error in React

Author:JIYIK Last Updated:2025/03/17 Views:

The error “ Expected onClick listener to be a functiononClick ” occurs when we pass a value that is not a function to the element’s attribute . To fix the error, make sure that you pass only functions to the element’s attribute.onClick

const App = () => {
  // ⛔️ Warning: Expected `onClick` listener to be a function
  // instead got a value of `string` type.
  return (
    <div>
      <button onClick="console.log('Click')">Click</button>
    </div>
  );
};

export default App;

React Expected onClick listener to be a function error

When a function is required, we pass a string to the button's onClickfunction property.

To resolve the error, make sure you pass the function to the element's onClickattribute.

const App = () => {
  const handleClick = () => {
    console.log('button clicked');
  };

  return (
    <div>
      <button onClick={handleClick}>Click</button>
    </div>
  );
};

export default App;

We passed a function to the element's onClickproperty, which resolved the error. However, notice that we did not call the function when we passed it to the prop.

We pass a reference to the function, not the result of calling the function.

If we pass the result of calling a function, then the event handler will be called immediately when the page loads, which is not what we want.

One common thing we have to do is pass arguments to event handlers. We can do this using inline arrow functions.

import {useState} from 'react';

const App = () => {
  const [count, setCount] = useState(0);

  const handleClick = (event, num) => {
    console.log(event.target);
    console.log('button clicked');
    setCount(count + num);
  };

  return (
    <div>
      <h2>{count}</h2>
      <button onClick={event => handleClick(event, 100)}>Click</button>
    </div>
  );
};

export default App;

Call the function with the event object and a numeric argument handleClick.

请注意, we didn't handleClickpass the result of calling the function to the onClick prop.

We actually pass it a function that takes the event object as an argument and returns handleClickthe result of calling the function with the event and the number 100 as arguments.

react handleClick function

It is very important not to handleClickpass the result of calling a function to onClickthe property, as the function will be called immediately when the page loads, which can cause an infinite re-rendering loop.

Summarize

The error “ Expected onClick listener to be a functiononClick ” appears when we pass a value that is not a function to the element’s attribute . To fix the error, you need to make sure that you only pass functions to the element’s attribute.onClick

For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.

Article URL:

Related Articles

How to avoid cross-origin (CORS) issues in React/Next.js

Publish Date:2025/03/17 Views:166 Category:NETWORK

In this article, we will introduce how to avoid cross-origin (CORS) issues in React/Next.js. Cross-origin resource sharing (CORS) is a protocol that defines how web requests should be handled when crossing different URLs.

React Tutorial - Transferring Props

Publish Date:2025/03/16 Views:185 Category:React

React transfers Props. Props are generated when components are encapsulated. Components expose some properties (Props) to the outside world to complete some functions.

React Tutorial: Props Anti-Pattern

Publish Date:2025/03/16 Views:183 Category:React

React's Props anti-pattern, using Props to generate state in getInitialState is an anti-pattern - Anti-Pattern.

React Tutorial - Props Validation

Publish Date:2025/03/16 Views:99 Category:React

Props validation is a very useful way to use components correctly. It can avoid many bugs and problems as your application becomes more and more complex. In addition, it can make your program more readable.

Why do you need to bind event handlers in React Class Components?

Publish Date:2025/03/16 Views:58 Category:React

When using React, we must have come across control components and event handlers. We need to use `.bind()` in the constructor of the custom component to bind these methods to the component instance. As shown in the following code:

Solution to the error "does not contain a default export" in React

Publish Date:2025/03/16 Views:187 Category:React

When we try to use `default import` to import from a module that does not have a `default export`, we get a "does not contain a default export" error. To fix the error, make sure the module has named exports and wrap the import in curly braces, e.g.

Scan to Read All Tech Tutorials

Social Media
  • https://www.github.com/onmpw
  • qq:1244347461

Recommended

Tags

Scan the Code
Easier Access Tutorial