javascript - 鼠标事件在我的功能组件中导致 "Too many re-renders"

标签 javascript reactjs

我正在尝试使用一个三元组来根据鼠标悬停在元素上来更改我的“titleHover”状态变量。不幸的是,我的代码给了我以下消息“未捕获错误:重新渲染次数过多。React 限制渲染次数以防止无限循环。”

一直在寻找解决方案,但无济于事,尽管我确信需要进行一个非常简单的更正。

 
function Tsection(props) {

  const [titleHover, settitleHover] = useState(false);

  function handledelete() {
    props.onDelete(props.id);
  }

  return (
    <li className="tsection">
      <div onMouseEnter={settitleHover(true)} onMouseLeave={settitleHover(false)} className="sectiontitle">
        {
          props.title > 0 ? 
          props.title :
          <span>Untitled Section {props.id}</span>
        }
        { titleHover ? <i class="far fa-edit"></i> : null }
      </div>
      <i onClick={handledelete} className="far fa-trash-alt deleteimg"></i>
    </li>
  );

}

export default Tsection;

最佳答案

现在,您将在渲染组件时立即调用 settitleHover。您需要传递回调而不是调用它:

<div onMouseEnter={() => settitleHover(true)} onMouseLeave={() => settitleHover(false)} className="sectiontitle">

关于javascript - 鼠标事件在我的功能组件中导致 "Too many re-renders",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65375960/

相关文章:

javascript - 存储和检索 100 个元素的数组

javascript - Node js http服务器错误处理

javascript - 模拟函数时在 Jest 中确定范围

javascript - React-Redux-从列表中删除项目

javascript - pickadate.js - 禁用过去的日期(包括今天)并禁用每个星期日

javascript - 如何使用 jquery 显示工具提示

javascript - 为什么 margin-bottom 不是 :[value]% working?

javascript - React Router 无法解析模块

javascript - D3 连接中的新对象数据数组无法被正确识别

asp.net - 在 IIS 服务器上部署 ASP.NET Core 2.1 React App