我正在使用Next.js的最新版本,使我的博客网站,不知道为什么显示我的错误,当我试图使我的形式,然后显示我这样的错误:
Warning: Function components cannot be given refs.
Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
我尝试以下代码:
import React, { useState } from "react";
import { APP_NAME } from "../config";
import Link from "next/link";
import {
Collapse,
Navbar,
NavbarToggler,
NavbarBrand,
Nav,
NavItem,
NavLink,
} from "reactstrap";
const Header = () => {
const [isOpen, setIsOpen] = useState(false);
const toggle = () => setIsOpen(!isOpen);
return (
<div>
<Navbar color="light" light expand="md">
<Link href="/">
<NavbarBrand className="font-weight-bold">{APP_NAME}</NavbarBrand>
</Link>
<NavbarToggler onClick={toggle} />
<Collapse isOpen={isOpen} navbar>
<Nav className="m-auto" navbar>
<NavItem>
<Link href="/signup">
<NavLink style={{ cursor: "pointer" }}>Signup</NavLink>
</Link>
</NavItem>
<NavItem>
<Link href="/signin">
<NavLink style={{ cursor: "pointer" }}>Signin</NavLink>
</Link>
</NavItem>
</Nav>
</Collapse>
</Navbar>
</div>
);
};
export default Header;
请给予我提宝贵的建议。
7条答案
按热度按时间nkoocmlb1#
最简单的解决方案可能是用原生html元素 Package NavLink。在您的情况下:
mxg2im7a2#
从官方文件来看:if-the-child-is-a-function-component显示了在
Link
中 Package 定制函数组件的正确方法。1.在
Link
中添加passHref
属性。1.用
React.forwardRef
Package 定制函数组件。但是,
NavbarBrand
不是一个可以操作的组件,可以创建一个自定义组件来 PackageNavbarBrand
。检查可以传递给
NavbarBrand
的有效属性,因为我以前没有使用过reactstrap
。jk9hmnmh3#
这对我很有效:
我没有使用NavbarBrand组件,而是添加了类navbar-brand
ycggw6v24#
将子组件 Package 在
a
(锚)标记中解决了我的问题。重现步骤:
1.使用Next JS中的
Link
标记环绕元件从"next/link"导入链接从"next/image"导入图像
溶液:
1.传递"important"
passHref
属性1.将整个子项封装在
a
标记中cig3rfwq5#
有一个更好的方法来解决这个问题:无论何时你要在Link标签下添加一个子标签,比如一个Image标签,只要把它们放在一个div或一个标签下就行了。2下面是一个例子:
xurqigkl6#
溶液:
1.* * 带锚点标记的换行**(标记)
1.使用passHref属性
e5njpo687#
只要把它包在锚标签里,它就会工作得很好。