Reactjs React路由器4.0.0.6中的部分重定向
在react router4.0.0.alpha6中,我希望实现以下目标:Reactjs React路由器4.0.0.6中的部分重定向,reactjs,react-router,url-redirection,Reactjs,React Router,Url Redirection,在react router4.0.0.alpha6中,我希望实现以下目标: site.com/en -> site.com site.com/en/hi -> site.com/hi site.com/en/hi/there -> site.com/hi/there 我该怎么做呢? 我从医生那里试了很多,但似乎都没能成功 谢谢你的阅读 注意:当您提到v4 alpha时,我将使用测试版代码(未发布,但可通过回购协议中的v4分支获得) 基本上,您要做的是识别以段en开头的任何pa
site.com/en -> site.com
site.com/en/hi -> site.com/hi
site.com/en/hi/there -> site.com/hi/there
我该怎么做呢?
我从医生那里试了很多,但似乎都没能成功
谢谢你的阅读 注意:当您提到v4 alpha时,我将使用测试版代码(未发布,但可通过回购协议中的v4分支获得) 基本上,您要做的是识别以段
en
开头的任何pathname
,将其与其余URL段分开,并重定向到pathname
的其余部分
作为正则表达式,您可以将其与/^\/en(\/.*)$/
匹配。React-Router使用regexp的路径来匹配路径名,这确实支持正则表达式,但React-Router不支持(至少不直接支持)。不过,您可以使用未命名的参数来配置与此匹配的路径
应该匹配/en
、/en
和/en/hi
,但不匹配/english
。接下来,在组件中,您需要将匹配的url
拆分为段,删除en
,重新加入段,然后重定向
const EnRedirect=({match})=>{
const parts=match.url.split(“/”)
零件.拼接(1,1)
常量to=parts.join(“/”)
回来
}
是否只重定向URL?或者渲染不同的组件?你能把你试过的贴出来吗?也许这会解释你想做什么多谢你的回答!您能告诉我您使用的#v4分支版本的提交号吗?因为我似乎找不到将要安装的提交。如果您尝试使用NPM安装,这将无法工作。您需要git clone
React路由器,查看v4
分支,转到packages/React路由器
目录(React路由器已转换为多个包:React路由器
,React路由器dom
,以及React-native
),npm链接
包,然后转到您的项目并npm link react router
。这比npm安装的步骤多得多-router@next,但在beta版发布之前,这是您在项目中使用beta版代码所需要做的。话虽如此,我认为您可以通过将路由
更改为匹配
,路径
更改为模式
,在alpha中实现这一点,和match.url
到match.pathname
。保罗,非常感谢你,我能够使用这些替换使它工作:const-App=()=>()const-EnRedirect=({location})=>{let-parts=location.pathname.split('/')parts.splice(1,1)return}