javascript - 尝试将 FontAwesome 放入正文时出现 Next.js 链接错误
问题描述
我在我的项目中使用react-fontawesome库。Next.js
当我尝试将任何图标放入Link
组件中时,会出现错误,我根本不明白。有人可以解释我为什么不能这样做吗?除了那个错误,应用程序工作正常 - 它重定向到正确的页面。
错误(仅在浏览器控制台中显示 - 终端中没有任何内容):
[ ]
代码:
import Link from 'next/link'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faHeart } from '@fortawesome/free-regular-svg-icons'
const Component = () => {
return (
// ...
<Link href='/followed'>
<FontAwesomeIcon icon={faHeart} />
</Link>
// ...
)
}
解决方案
根据官方文档,如果它是一个功能组件,你应该forwardRef
给孩子(FontAwesomeIcon
这里)。意思是,功能组件默认不接受组件ref
传递的prop Link
。如果Link
组件包装了原生元素(例如div
, a
),则不需要这样做,但由于您使用的是功能组件(来自第三方库或自己编写forwardRef
的组件),因此组件需要作为错误状态。
import Link from 'next/link'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faHeart } from '@fortawesome/free-regular-svg-icons'
import React from 'react'
const Component = () => {
const MyLinkComponent = React.forwardRef(({ onClick, href }, ref) => {
return (
<FontAwesomeIcon icon={faHeart} />
)
})
return (
// ...
<Link href='/followed' passHref>
<MyLinkComponent/>
</Link>
// ...
)
}
另请注意,我passHref
在组件中使用了 propLink
来强制Link
将href
属性发送给其子级。默认值为false
。
推荐阅读
- android - 使用 GreenDao 时启用 proguard 的发布版本中的应用程序崩溃
- javascript - D3 Zoom 的 translateExtent 未按预期工作
- flutter - Flutter Mobile 和 Web 包同居
- python - 为什么要执行这些类定义中的代码?
- javascript - 如何在控制台的 Angular 下拉菜单中设置范围值?
- javascript - InfoWindows 有一些问题。不太确定如何处理它
- google-cloud-data-fusion - 相当于谷歌云数据融合数据管道牧马人中的 LEFT() 函数?
- vim - 无法让 vim 8.0 终端 API 工作到 vim
- asp.net-core - 将接受语言标头复制到传出请求的简便方法?
- tensorflow - 如何训练 tesseract 以减少空输出的数量