首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NextJS链接中呈现自定义组件

在NextJS链接中呈现自定义组件
EN

Stack Overflow用户
提问于 2022-10-06 08:39:03
回答 1查看 61关注 0票数 0

问题:

我有一个组件,应该重定向用户到一个新的页面点击。我想使用Next的<Link>组件来处理路由更改。

但是,我注意到,如果Link组件的任何子元素不是标准HTML元素(例如,<div><a>、.),则拒绝呈现。

在下面的示例中,我要呈现的组件是heroicons库中的一个图标。

MyPage.js

代码语言:javascript
复制
import Link from 'next/link'
import { ArrowSmRightIcon } from 'heroicons-react'

export default function MyPage() {
    return(
        <Link href='/targetPage'>
            <ArrowSmRightIcon />
        </Link>
    )
}

运行上述操作会出现以下错误:

错误:元素类型无效:预期为字符串(用于内置组件)或类/函数(用于组合组件),但未定义。

尝试解决办法:

我在网上找到了一些关于必须使用forwardRef创建自定义组件的建议。我已经将我的自定义组件实现为:

IconLink.js

代码语言:javascript
复制
import NextLink from 'next/link'
import { forwardRef } from "react";
import { ArrowSmRightIcon } from 'heroicons-react'

const IconLink = forwardRef(({ href, prefetch, replace, scroll, shallow, locale, ...props }, ref) => {
    return(
        <NextLink
        href={href}
        replace={replace}
        scroll={scroll}
        shallow={shallow}
        locale={locale}
        passHref
        >
            <ArrowSmRightIcon ref={ref} {...props} />
        </NextLink>
    )
  })

export default IconLink

MyPage.js

从‘./ IconLink’导入IconLink;

代码语言:javascript
复制
export default function MyPage() {
    return(
        <IconLink
            passHref
            href='/targetPage'
        />
    )
}

然而,我仍然会遇到同样的错误。

我应该如何在Next的<Link>组件中呈现自定义子组件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-06 09:07:49

问题不是来自下一个/链接,而是来自导入,此错误表示包中没有命名的导出"ArrowSmRightIcon“--我相信您正在寻找的是ArrowSmRight

代码语言:javascript
复制
import { ArrowSmRight  } from 'heroicons-react'

另外,如维护人员所述,不推荐该包:

这个包已经被废弃了

作者致辞:

官方Heroicons V1发布。请在未来的>项目中使用以下内容:https://www.npmjs.com/package/@heroicons/react

目前维护的版本是:https://www.npmjs.com/package/@heroicons/react

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73970862

复制
相关文章

相似问题

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