reactjs - React 钩子在 gatsby productioin 构建中不起作用
问题描述
我是盖茨比的新手。我正在尝试构建一个应用程序,在某些时候我只需要使用一个反应钩子——useState 和 useEffect。虽然在本地服务站点时它对我来说很好,但在构建项目后该功能不起作用。通常,我尝试将 onMouseLeave 和 onMouseEnter 操作添加到菜单中的每个项目,然后操作各个项目。在生产构建中,它看起来好像不支持 Javascript。我知道在构建时我无法访问窗口和文档对象,但我根本不使用它。我什至尝试在 useEffect 中显示一个简单的控制台日志 - 控制台中没有任何日志。
我试图做这样的事情 - 它在本地工作。一旦构建,逻辑就不会运行。
<ul>
{links.map((link) => {
return <li id={link.id} onMouseEnter={() => setHoveredElement(link.id)} onMouseLeave={() => setHoveredElement(undefined)}>
<Link to={link.path} aria-haspopup={!!link.items} aria-expanded={hoveredElement === link.id}>
{link.title}
</Link>
{link.items && <HeaderSubMenu {...link} />}
</li>;
})}
</ul>
有人可以解释这个案子吗?这是 gatsby 的默认行为还是我做错了什么?
解决方案
您缺少该key
属性。
<ul>
{links.map((link) => {
return <li key={link.id} id={link.id} onMouseEnter={() => setHoveredElement(link.id)} onMouseLeave={() => setHoveredElement(undefined)}>
<Link to={link.path} aria-haspopup={!!link.items} aria-expanded={hoveredElement === link.id}>
{link.title}
</Link>
{link.items && <HeaderSubMenu {...link} />}
</li>;
})}
</ul>
如果即使添加key
,您的代码也不起作用,请尝试添加 CodeSandbox,因为很难仅使用提供的代码会出错。
推荐阅读
- java - 带有私有 java 构造函数的 Kotlin 顶级函数
- python - 华宇网格搜索功能
- swift - 使用闭包登录后如何正确传递新的文本值
- python - “str”对象没有属性“dt”
- java - 如何在包含 tagName 的单元格中获取值是“td”或“mat-cell”
- c# - 是否可以将页面请求拆分为 50 / 50?
- c++ - 为什么是
的 std::size 不适用于原始数组参数 - spring-boot - RestTemplate 交换返回 URL 被拒绝
- java - Java - 根据用户输入生成代码,在运行时编译和运行它?
- ruby-on-rails - 如何设置动态resque队列