<Route exact path="/name/:username" component={Home}/>
当在其他组件中使用时,要重定向到此路径,它不是重定向,因为我在用户名中有“/”(即,在路由参数中)
const username = "/john/bradley" <Link to='name/username'>Click Here </Link>
frebpwbc1#
如果要有条件地匹配(1)单个“用户名”路径段或(2)“名字”段和“姓氏”段的路由路径,则需要为这两个段声明路径匹配器。示例:
<Route exact path={["/name/:firstname/:lastname", "/name/:username"]} component={Home} />
然后正确形成链接目标。链接到"/name/john/bradly"("/name/:firstname/:lastname"):
"/name/john/bradly"
"/name/:firstname/:lastname"
const username = "/john/bradley";
链接到"/name/johnBradly"("/name/:username"):
"/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对象字符串中的用户名。
Home
location.search
const { search } = useLocation(); const searchParams = new URLSearchParams(search); const username = searchParams.get("username"); // "john bradley"
qni6mghb2#
正常情况下,它会把它作为另一条路线。如果你坚持用“/”来推进你的名字,最好用“-”来代替它。I.e
const username = "/john-bradley"
2条答案
按热度按时间frebpwbc1#
如果要有条件地匹配(1)单个“用户名”路径段或(2)“名字”段和“姓氏”段的路由路径,则需要为这两个段声明路径匹配器。
示例:
然后正确形成链接目标。
链接到
"/name/john/bradly"
("/name/:firstname/:lastname"
):链接到
"/name/johnBradly"
("/name/:username"
):对于像用户名字段这样的东西,我建议将其作为queryString参数传递,这样您就不需要奇怪的路由路径匹配器了。
示例:
..。
然后在
Home
组件中访问location.search
对象字符串中的用户名。qni6mghb2#
正常情况下,它会把它作为另一条路线。
如果你坚持用“/”来推进你的名字,最好用“-”来代替它。
I.e