我是反应路由器的新手。我使用 react-router-dom 4.2.2在我的路由器设置中,我有:
<Route path={"/confirmuser/:confirmation_code/:username"} component={ConfirmUser} />
这是我试图实现的示例 url:
localhost:3003/confirmuser?confirmation_code=986797&username=5f1
如您所见,我正在尝试发送多个查询字符串。在确认用户中,我读取了查询字符串,如下所示:
console.log(this.props.match.params.confirmation_code);
console.log(this.props.match.params.username);
但是,我什至没有被定向到此组件,并且似乎 react 无法正确路由到该页面。知道吗?
React-router v4 不再解析查询字符串,因此您必须自己进行解析(不推荐(,或者使用像查询字符串这样的包。访问值的一种简单方法是使用包装器组件,如下所示:
import * as queryString from 'query-string';
..
const WrappedConfirmUser = () => {
const {confirmation_code, username} = queryString.parse(location.search);
return <ConfirmUser confirmation_code={confirmation_code} username={username}/>;
}
您正在尝试将搜索参数映射到路径段?
您定义的路由将尝试匹配路径,而不是搜索参数。尝试: http://localhost:3003/confirmuser/986797/5f1
这些值将如下所示this.props.match.params
:
{
confirmation_code: '986797',
username: '5f1',
}
如果您仍然想读取搜索参数,您可以从 this.props.location.search
访问它们,但 React-router 不会将它们与您匹配到路由。
您的路径与您的网址不匹配。
它匹配localhost:3003/confirmuser/986797/5f1
然后您可以使用额外的道具match
访问参数:
{props.match.params.confirmation_code}
{props.match.params.username}