问题描述
在这里,我想将ShowIt组件作为嵌套路线加载,但它不起作用,我的意思是当我单击链接时,我转到了该路线,但ShowIt组件(Hello World)没有加载,我真的需要解决这个问题
请帮助我
import React from 'react';
import {
browserRouter as Router,Switch,Route,Link
} from 'react-router-dom';
const ShowIt = <div>Hello world</div>;
const Links = (
<div>
<Link to="news/components">Go to Components</Link>
<br/>
<Link to="news/states-vs-props">Go to states vs props</Link>
</div>
);
const News = () => {
return (
<div>
{
Links
}
<Router>
<Switch>
<Route path="news/:id">
<ShowIt />
</Route>
</Switch>
</Router>
</div>
);
};
export default News;
解决方法
您不应该在<Link>
之外使用<Router>
。这样做:
<Router>
{Links}
<Switch>
<Route path="/news/:id">
<ShowIt />
</Route>
</Switch>
</Router>
您的代码中还有其他几个问题:
- 使
ShowIt
是一个React组件:
const ShowIt = () => <div>Hello world</div>;
- 使用
/some-route
代替some-route
:
<Link to="/news/components">Go to Components</Link>
然后,访问id
组件中的ShowIt
:
import { useParams } from "react-router-dom";
// ...
const { id } = useParams<{ id: string }>();