You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何整合React Material UI Link与React Router Link及导航栏路由修复

解决React Router导航栏标签点击失效的问题

我一眼就发现了问题的根源——你在Anime List对应的<Link>组件里,把属性名component拼写成了compoent(少了一个字母'n')!这就是为什么只有Home标签能正常跳转,其余标签点击毫无反应的原因。

Material-UI的<Link>组件需要通过component属性指定React Router的Nav(也就是你重命名后的路由Link组件),才能让点击行为触发路由切换。拼写错误导致这个配置完全失效,点击Anime List标签时,它只是个普通的文本节点,根本不会触发路由跳转。

修正后的完整代码

import React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import Typography from '@material-ui/core/Typography';
import InputBase from '@material-ui/core/InputBase';
import SearchIcon from '@material-ui/icons/Search';
import Link from '@material-ui/core/Link';
import logo from '../assets/mainLogo2.png';
import Avatar from '@material-ui/core/Avatar';
import CssBaseline from '@material-ui/core/CssBaseline';
import useStyles from './NavigatorStyles';
import { Link as Nav, Route, Switch, Redirect } from 'react-router-dom';
import Home from '../home/Home';
import AnimeList from '../animeList/AnimeList'
import NotFound from '../404/NotFound';

function Navigator() {
 const classes = useStyles();
 return (
  <div className={classes.root}>
   <CssBaseline />
   <AppBar position="static" color="primary" className={classes.appBar}>
    <Toolbar className={classes.toolbar}>
     <Avatar src={logo} />
     <Typography variant="h6" color="inherit" noWrap className={classes.toolbarTitle}>Anime Search</Typography>
     <nav>
      <Link component={Nav} to="/" variant="button" color="inherit" className={classes.link}>
       Home
      </Link>
      {/* 这里修正了拼写错误:compoent → component */}
      <Link component={Nav} to="/animeList" variant="button" color="inherit" className={classes.link}>
       Anime List
      </Link>
     </nav>
     <div className={classes.search}>
      <div className={classes.searchIcon}>
       <SearchIcon />
      </div>
      <InputBase placeholder="Search…" classes={{ root: classes.inputRoot, input: classes.inputInput, }} inputProps={{ 'aria-label': 'search' }} />
     </div>
    </Toolbar>
   </AppBar>
   <Switch>
    <Redirect exact from="/" to="/home" />
    <Route component={Home} path="/home" />
    <Route component={AnimeList} path="/animeList" />
    <Route component={NotFound} path="*" />
   </Switch>
  </div>
 );
}

export default Navigator;

另外补充一个小优化:你的路由规则里,根路径/会重定向到/home,而Home标签的to属性是"/",点击后会先跳转到/再重定向到/home,这没问题,但如果想更直接,也可以把Home标签的to改成"/home",这样能少一次重定向步骤。

内容的提问来源于stack exchange,提问作者stanley pena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:42:35