到达路由器未显示匹配 url 的正确组件
Reach Router not showing correct component for matched url
通过以下内容,我可以导航到 /shop/
、/shop/dept1/
、/shop/dept2/
,并查看我希望看到的组件。
当我尝试导航到 /shop/dept1/?option=...
时,我仍然只看到 DeptOne 组件,而不是 PLP 组件。我几乎可以肯定我过去做过类似的事情,但这次似乎无法复制。
<Router basepath='/shop'>
<Shop path='/' />
<DeptOne path='/dept1/' />
<DeptTwo path='/dept2/' />
<PLP path='/dept1/*' />
<PLP path='/dept2/*' />
</Router>
URL 查询参数(? 后的键值对)不是路径的一部分。所以对于 /shop/dept1/?option=...
路径仍然是 /shop/dept1/
.
这意味着路径 /shop/dept1/
的组件必须处理查询参数。可以通过 location
对象在组件中访问查询参数,该对象是 Router (https://reactrouter.com/web/api/location) 的道具。
例如,您可以制作一个包装器组件:
const WrapperComponent = ({ match, location }) => {
return (
<>
<DeptOne />
{location.search == ""
? null
: <PLP queryParams={location.search}>
}
</>
);
}
queryParams
属性是以 ? 开头的字符串。所以如果路径是 /shop/dept1/?option=...
queryParams 将是 ?option=...
.
更多信息here。
通过以下内容,我可以导航到 /shop/
、/shop/dept1/
、/shop/dept2/
,并查看我希望看到的组件。
当我尝试导航到 /shop/dept1/?option=...
时,我仍然只看到 DeptOne 组件,而不是 PLP 组件。我几乎可以肯定我过去做过类似的事情,但这次似乎无法复制。
<Router basepath='/shop'>
<Shop path='/' />
<DeptOne path='/dept1/' />
<DeptTwo path='/dept2/' />
<PLP path='/dept1/*' />
<PLP path='/dept2/*' />
</Router>
URL 查询参数(? 后的键值对)不是路径的一部分。所以对于 /shop/dept1/?option=...
路径仍然是 /shop/dept1/
.
这意味着路径 /shop/dept1/
的组件必须处理查询参数。可以通过 location
对象在组件中访问查询参数,该对象是 Router (https://reactrouter.com/web/api/location) 的道具。
例如,您可以制作一个包装器组件:
const WrapperComponent = ({ match, location }) => {
return (
<>
<DeptOne />
{location.search == ""
? null
: <PLP queryParams={location.search}>
}
</>
);
}
queryParams
属性是以 ? 开头的字符串。所以如果路径是 /shop/dept1/?option=...
queryParams 将是 ?option=...
.
更多信息here。