[英]NavLinks wont work because of react-router
Long story short, I just want the links to work but this error Uncaught TypeError: Cannot read properties of undefined (reading 'pathname')
keeps popping up.长话短说,我只想让链接正常工作,但是这个错误
Uncaught TypeError: Cannot read properties of undefined (reading 'pathname')
不断弹出。 I did reinstall the packages, restructured the code multiple times, reopened react, deleted and added /
since it did no change.我确实重新安装了软件包,多次重组代码,重新打开反应,删除和添加
/
因为它没有改变。 ITs such a simple project yet it comes with such a frustrating error.它是一个如此简单的项目,但它却带来了如此令人沮丧的错误。 Here's the code, hopefully your eyes see what mine don't.
这是代码,希望你的眼睛能看到我没有看到的。 This is
App.js
这是
App.js
import Category from "./components/Category";
import Pages from "./pages/Pages";
import { BrowserRouter as Router } from "react-router-dom";
function App() {
return (
<div className="App">
<Router>
<Category></Category>
<Pages></Pages>
</Router>
</div>
);
}
export default App;
This is Category.jsx
:这是
Category.jsx
:
import { FaPizzaSlice, FaHamburger } from "react-icons/fa";
import { GiNoodles, GiChopsticks } from "react-icons/gi";
import styled from "styled-components";
import { NavLink } from "react-router-dom";
function Category() {
return (
<List>
<NavLink to={'/cuisine/Italian'}>
<FaPizzaSlice />
<h4>Italian</h4>
</NavLink>
<NavLink to={'/cuisine/American'}>
<FaHamburger />
<h4>American</h4>
</NavLink>
<NavLink to={'/cuisine/Thai'}>
<GiNoodles />
<h4>Thai</h4>
</NavLink>
<NavLink to={'/cuisine/Japanese'}>
<GiChopsticks />
<h4>Japanese</h4>
</NavLink>
</List>
);
}
const List = styled(NavLink)`
display: flex;
justify-content: center;
margin: 2rem 0rem;
`;
export default Category;
And this is Pages.jsx
:这是
Pages.jsx
:
import Home from "./Home";
import React from "react";
import { Route, Routes} from "react-router-dom";
//import { filterProps } from "framer-motion";
import Cuisine from "./Cuisine";
function Pages() {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="cuisine/*" element={<Cuisine />} />
</Routes>
);
}
export default Pages;
I have no idea what else to try.我不知道还能尝试什么。
Thank you:)
There are two things to do here.这里有两件事要做。
Pages.jsx:
Put /
in front of the path as:将
/
放在路径前面,如下所示:
<Route path="/cuisine/*" element={<Cuisine />} />
<List>
into some other element ie <div>
.<List>
更改为其他元素,即<div>
。 List does not work with NavLink as it is. Category.jsx:
function Category() {
return (
<div>
<NavLink to={"/cuisine/Italian"}>
<FaPizzaSlice />
<h4>Italian</h4>
</NavLink>
<NavLink to={"/cuisine/American"}>
<FaHamburger />
<h4>American</h4>
</NavLink>
<NavLink to={"/cuisine/Thai"}>
<GiNoodles />
<h4>Thai</h4>
</NavLink>
<NavLink to={"/cuisine/Japanese"}>
<GiChopsticks />
<h4>Japanese</h4>
</NavLink>
</div>
);
}
You are wrapping the links in Category
in an NavLink
and haven't passed a required to
prop.您正在将
Category
中的链接包装在NavLink
中,并且没有传递 required to
prop。
const List = styled(NavLink)`
display: flex;
justify-content: center;
margin: 2rem 0rem;
`;
... ...
function Category() {
return (
<List> // <-- NavLink, missing to prop
<NavLink to={'/cuisine/Italian'}>
<FaPizzaSlice />
<h4>Italian</h4>
</NavLink>
<NavLink to={'/cuisine/American'}>
<FaHamburger />
<h4>American</h4>
</NavLink>
<NavLink to={'/cuisine/Thai'}>
<GiNoodles />
<h4>Thai</h4>
</NavLink>
<NavLink to={'/cuisine/Japanese'}>
<GiChopsticks />
<h4>Japanese</h4>
</NavLink>
</List>
);
}
NavLink导航链接
interface LinkProps extends Omit< React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" > { replace?: boolean; state?: any; to: To; // <-- to prop is required reloadDocument?: boolean; }
You probably want List
to be some other styled element, like a div
.您可能希望
List
成为其他样式元素,例如div
。
const List = styled.div`
display: flex;
justify-content: center;
margin: 2rem 0rem;
`;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.