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

MUI BottomNavigation跳转新页面后选中状态无法自动更新问题

问题原因
  • 点击底部导航按钮时,handleChange触发时机早于Link组件的路由跳转完成时机,此时读取的props.location.pathname仍是跳转前的旧路径,无法正确设置对应选中态。第二次点击时路由跳转已完成,读取到新路径才能正确赋值,因此需要双击才能更新选中状态。
  • 未对路由路径变化做监听,路由跳转完成后没有主动同步更新底部导航的选中值。
修复方案

修改BottomNav组件,新增useEffect监听路由路径变化,路径更新时自动同步设置对应选中值,修改后完整代码如下:

import * as React from 'react';
import { Paper } from '@mui/material';
import BottomNavigation from '@mui/material/BottomNavigation';
import BottomNavigationAction from '@mui/material/BottomNavigationAction';
import ForumIcon from '@mui/icons-material/Forum';
import { Link } from 'react-router-dom';
import { withRouter } from 'react-router';

import HomeIcon from '@mui/icons-material/Home';
import PersonIcon from '@mui/icons-material/Person';

function BottomNav(props) {
  const [value, setValue] = React.useState(1);

  // 监听路由路径变化,自动同步选中值
  React.useEffect(() => {
    const path = props.location.pathname;
    if(path == '/match'){
      setValue(0);
    } else if(path == '/'){
      setValue(1);
    } else if(path == '/profile'){
      setValue(2);
    }
  }, [props.location.pathname])

  const handleChange = (event, newValue) => {
    setValue(newValue);
  }

  return (
    <Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0 }} elevation={3}>
      <BottomNavigation
        value={value}
        onChange={handleChange}
        showLabels
      >
        <BottomNavigationAction 
        component={Link}
        to="/match" 
        label="Matches" 
        icon={<ForumIcon />} />

        <BottomNavigationAction 
        component={Link}
        to="/" 
        label="Home" 
        icon={<HomeIcon />} />

        <BottomNavigationAction 
        component={Link}
        to="/profile" 
        label="Profile" 
        icon={<PersonIcon />} />
      </BottomNavigation>
    </Paper>
  );
}

export default withRouter(BottomNav);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:45:01