首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误(“太多的重新呈现。React限制呈现的次数,以防止无限循环”)。功能组件而不呈现

错误(“太多的重新呈现。React限制呈现的次数,以防止无限循环”)。功能组件而不呈现
EN

Stack Overflow用户
提问于 2022-03-08 12:59:41
回答 3查看 61关注 0票数 0

这是我的组成部分:

代码语言:javascript
复制
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;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-08 13:04:29

您正在调用这些函数,而不是传递它们。

改变这个

代码语言:javascript
复制
<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>

投入到这个

代码语言:javascript
复制
 <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>

或者这个

代码语言:javascript
复制
 <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>

另外,我会将函数声明移到最上面,并将部分放在底部。

代码语言:javascript
复制
import React, { useState } from "react";

const Product = () => {
    const [count, setCount] = useState(0);
     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;
          }
      }
    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>
        </> 
     );
}
票数 0
EN

Stack Overflow用户

发布于 2022-03-08 13:03:01

您应该将onClick函数更改为箭头函数:

代码语言:javascript
复制
<button onClick={() => increase()} 
票数 1
EN

Stack Overflow用户

发布于 2022-03-08 13:11:11

您必须更新您的onClick触发器,还必须重新格式化您的函数,正如我所看到的,您在return()之后使用了函数。

所以正确的代码是:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71395501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档