'Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." Functional Component and doesn't render

This is my component :

import React, { useState } from "react";

const Product = () => {
    const [count, setCount] = useState(0);
    return ( 
        <>
        <span className="m-2 text-info">Laptop</span>
        <span className="m-2 badge bg-primary">{format()}</span>
        <button onClick={increase()} className="m-2 btn-sm btn-success">+</button>
        <button onClick={decrease()} className="m-2 btn-sm btn-warning">-</button>
        <button onClick={delet()} className="m-2 btn-sm btn-danger">Delete🗑</button>
        </> 
     );

     function increase(){
          setCount(count + 1);
      }
      
     function decrease(){
          setCount(count - 1);
      }
     function delet(){
          setCount(count - count);
      }
      
     function format(){
          if (count === 0){
              return "Zero";
          }else{
              return count;
          }
      }
}
 
export default Product;


Solution 1:[1]

You should change onClick functions to arrow function :

<button onClick={() => increase()} 

Solution 2:[2]

You have to update your onClick trigger and also you have to reformat your functions as i see you have used functions after return().

So the right code will be this:

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


     function increase(){
          setCount(count + 1);
      }
      
     function decrease(){
          setCount(count - 1);
      }
     function delete(){
          setCount(count - count);
      }
      
     function format(){
          if (count === 0){
              return "Zero";
          }else{
              return count;
          }
      }

    return ( 
        <>
        <span className="m-2 text-info">Laptop</span>
        <span className="m-2 badge bg-primary">{format()}</span>
        <button onClick={() => {increase()}} className="m-2 btn-sm btn-success">+</button>
        <button onClick={() => {decrease()}} className="m-2 btn-sm btn-warning">-</button>
        <button onClick={() => {delete()}} className="m-2 btn-sm btn-danger">Delete?</button>
        </> 
     );
}
 
export default Product

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cansu
Solution 2 udoyhasan