React Router v6路由Home组件时控制台报TypeError问题解决
报错原因
控制台抛出的Uncaught TypeError: Cannot read properties of undefined (reading 'string')根源是依赖使用错误:
- 你同时安装了
react-icon和react-icons两个包,其中react-icon是长期无人维护的废弃包,不兼容React 18版本,内部读取PropTypes时触发了undefined错误。 - Navbar组件中从错误的包
react-icon导入FaBars图标,直接触发了该报错,导致整个组件树渲染失败,Home组件无法正常显示。 - 你现有的路由配置逻辑完全符合React Router v6的规范,不存在问题。
修复步骤
- 卸载错误的废弃依赖,在项目根目录执行命令:
npm uninstall react-icon - 修改Navbar.js的图标导入语句,
react-icons的图标需要按对应图标集从子路径导入,Fa前缀的图标属于Font Awesome集合,将原来的导入行:import {FaBars,} from 'react-icon'
替换为:import { FaBars } from 'react-icons/fa'
import React from 'react' import './NavbarStyles.css' import Logo from '../assets/logo.png' import {Link} from 'react-router-dom' import { FaBars } from 'react-icons/fa' const Navbar = () => { return ( <header> <nav className='navbar'> <div className='logo'> <Link to='/'><img src={Logo} alt='' /></Link> </div> <ul className='nav-menu'> <li className='nav-item'> <Link to='/' className='nav-link'>Home</Link> </li> <li className='nav-item'> <Link to='/' className='nav-link'>Services</Link> </li> <li className='nav-item'> <Link to='/' className='nav-link'>Events</Link> </li> <li className='nav-item'> <Link to='/' className='nav-link'>Contact</Link> </li> </ul> <div className='hamburger'> <FaBars /> </div> </nav> </header> ) } export default Navbar;
其余文件(index.js、App.js、Home.js)的代码逻辑无需修改,保存后重启开发服务即可正常渲染Home组件,控制台报错消失。
内容的提问来源于stack exchange,提问作者kaytee
相关产品推荐
相关产品推荐

