我有一个项目在material-ui,nextjs和typescript.我试图让我的导航栏工作nextjs:
import * as React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Link from "next/link";
import {Tab, Tabs} from "@material-ui/core";
export default function NavBar() {
return (
<AppBar position="static">
<Tabs>
<Tab label="Timer"><Link href="timer" /> </Tab>
<Tab label="Home" to="/" component={Link} />
</Tabs>
</AppBar>
);
}
但它会导致构建失败。我遗漏了什么吗?
5条答案
按热度按时间pxq42qpu1#
在本例中,我认为您希望用
<Link />
元素 Package<Tab />
元素。dced5bon2#
其他解决方案基本上是将Next.js的
Link
Package 在MUI的Tab
周围,这可能破坏了Tabs
和Tab
之间的兼容性。为什么不设置
Link
的样式以填充整个Tab
?MUI v5的代码:nfzehxib3#
这可能是更好的搜索引擎优化:
原因是
Link
不会将href
添加到子组件中(即使它是a
组件)。passHref
强制执行此操作,但preventDefault
不能像MUI文档中提到的那样放置为onClick
,因为它不会更改URL。nbnkbykc4#
保留所有MUI样式
7kjnsjlb5#
以下是直接来自MUI v.5的示例。
https://codesandbox.io/s/d2dco?file=/demo.tsx
创建LinkTab组件:
用法:
但老实说,
<Tab label="login" href="/login" />
只是为我工作