<Route exact path="/name/:username" component={Home}/>
当在其他组件中使用它时,要重定向到此路径,它不是重定向,因为我有"/"在用户名中(即在路由参数中(
const username = "/john/bradley"
<Link to='name/username'>Click Here </Link>
如果您想有条件地匹配一个路由路径,该路径是(1(单个";用户名";路径段或(2(;名字";则分段为"0";姓氏";段中,您需要为两者声明路径匹配器。
示例:
<Route
exact
path={["/name/:firstname/:lastname", "/name/:username"]}
component={Home}
/>
然后正确形成链接目标。
链接到"/name/john/bradly"
("/name/:firstname/:lastname"
(:
const username = "/john/bradley";
链接到"/name/johnBradly"
("/name/:username"
(:
const username = "/johnBradley";
...
<Link to={`name/${username}`}>Click Here </Link>
对于用户名字段,我建议将其作为queryString参数传递,这样就不需要奇怪的路由路径匹配器。
示例:
<Route exact path="/name" component={Home}/>
const username = "john bradley";
...
<Link
to={{
pathname: 'name',
search: `?username=${username}`,
}}
>
Click Here
</Link>
然后在Home
组件中访问location.search
对象字符串中的用户名。
const { search } = useLocation();
const searchParams = new URLSearchParams(search);
const username = searchParams.get("username"); // "john bradley"
通常它会将其作为另一条路由。
如果你坚持用一个"/"可能最好用"-"相反
即
const username = "/john-bradley"