Mik*_*kel 38 javascript reactjs next.js
我正在使用 Next.js 最新版本来制作我的博客网站,不知道为什么会显示错误,当我尝试制作表单时,会显示如下错误:
Warning: Function components cannot be given refs.
Attempts to access this ref will fail. Did you mean to use React.forwardRef()?
Run Code Online (Sandbox Code Playgroud)
我尝试过下面的代码:
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;
Run Code Online (Sandbox Code Playgroud)
请给我您的宝贵建议。
小智 46
最简单的解决方案可能是使用本机 html 元素包装 NavLink。在你的情况下:
<Link href="/signup" passHref>
<a>
<NavLink style={{ cursor: "pointer" }}>Signup</NavLink>
</a>
</Link>
Run Code Online (Sandbox Code Playgroud)
bcj*_*ohn 30
来自官方文档:if-the-child-is-a-function-component显示了当您将自定义函数组件包装在Link.
passHref属性Link。React.forwardRef。但是,它NavbarBrand不是您可以操作的组件。您可以创建一个自定义组件来包装NavbarBrand. 它可能喜欢
const CustomNavbarBrand = React.forwardRef(({ onClick, href }, ref) => {
return (
<NavbarBrand href={href} onClick={onClick} ref={ref}>
Click Me
</NavbarBrand>
)
})
<Link href="/" passHref>
<CustomNavbarBrand>{APP_NAME}</CustomNavbarBrand>
</Link>
Run Code Online (Sandbox Code Playgroud)
检查可以传递给的有效属性,NavbarBrand因为我之前没有使用过reactstrap。
小智 8
解决方案 :
带锚标签(标签)的包装
使用passHref属性
<Link href='/' passHref>
<a>
<Image src='logo.png' width="50px" height="50px" />
</a>
</Link>Run Code Online (Sandbox Code Playgroud)
小智 5
这对我有用:
<Link href="/">
<div className="navbar-brand">
<a>{APP_NAME}</a>
</div>
</Link>
Run Code Online (Sandbox Code Playgroud)
我没有使用 NavbarBrand 组件,而是添加了类 navbar-brand
| 归档时间: |
|
| 查看次数: |
38802 次 |
| 最近记录: |