【发布时间】:2018-06-05 07:39:52
【问题描述】:
我在 URL 中有一组动态参数,例如用户区域设置,如下所示:
/en/homepage
在我的路由器配置 JSON 文件中,我有类似的内容:
/:locale/homepage
在 React Router 中直接替换这些参数的最佳方法是什么?
我提出的这个解决方案在我看来与标准或便携式解决方案相去甚远:
const urlTemplate = '/:language/homepage';
const mappedUrl = pathToRegexp.compile(urlTemplate);
const url = mappedUrl({
'language': this.props.match.params.language
})
this.props.history.push(url);
如果组件由 withRouter (来自 React 路由器的 HOC )包装并用 pathToRegexp (????pillarjs/path-to-regexp )替换它们,我可以检索匹配参数,但如果我需要使用<Link to={}> 在无状态组件中很烦人。
是否有标准的解决方案可以做到这一点?
提前谢谢你:)
【问题讨论】:
-
如果组件没有接收到Router props,则需要使用withRouter,其他可能的解决方案是将所有props传递给子组件
-
@ShubhamKhatri 谢谢你的回答。问题是如果嵌套的无状态组件有长尾,它会变得有点复杂:)
-
如果你有很多嵌套的无状态组件,你可能有兴趣了解 React Context Api reactjs.org/blog/2018/03/29/…
-
如果你有很多嵌套的无状态组件,你可能有兴趣了解 [React Context Api][1] [1]w: reactjs.org/blog/2018/03/29/…
-
@AnnamariaL 是否有任何答案可以帮助您解决问题?您需要更多替代方案来解决您的问题吗?
标签: javascript reactjs react-router react-router-v4