在使用React Router的<Link>
组件时,可以通过几种不同的方式向路由传递参数(道具)。以下是一些基础概念和相关方法:
/user/:id
。?
开头的键值对,附加在URL的末尾,例如/search?q=react
。<Link>
组件的state
属性传递的数据,不会显示在URL中,但可以在导航时保持状态。/user/:userId
。/products?page=2&sort=price
。以下是如何使用React Router v6向路由传递参数的示例:
首先,确保你已经安装了React Router:
npm install react-router-dom
import { BrowserRouter as Router, Route, Routes, Link } from 'react-router-dom';
function User({ match }) {
return <h2>User ID: {match.params.id}</h2>;
}
function App() {
return (
<Router>
<nav>
<ul>
<li>
<Link to="/user/123">User 123</Link>
</li>
</ul>
</nav>
<Routes>
<Route path="/user/:id" element={<User />} />
</Routes>
</Router>
);
}
import { useSearchParams } from 'react-router-dom';
function Search() {
let [searchParams] = useSearchParams();
return <h2>Search Query: {searchParams.get('q')}</h2>;
}
function App() {
return (
<Router>
<nav>
<ul>
<li>
<Link to="/search?q=react">Search React</Link>
</li>
</ul>
</nav>
<Routes>
<Route path="/search" element={<Search />} />
</Routes>
</Router>
);
}
function Home() {
return (
<Link to={{ pathname: '/about', state: { fromDashboard: true } }}>
Go to About
</Link>
);
}
function About() {
const location = useLocation();
return <h2>Navigation from dashboard: {location.state?.fromDashboard ? 'Yes' : 'No'}</h2>;
}
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
如果你在使用<Link>
传递参数时遇到问题,可能的原因包括:
<Link>
导航。解决方法:
<Link>
的to
属性和Route
的path
属性是否匹配。通过以上方法,你应该能够在React应用中有效地使用<Link>
组件传递参数。
领取专属 10元无门槛券
手把手带您无忧上云