Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React路由器4.0.0.6中的部分重定向_Reactjs_React Router_Url Redirection - Fatal编程技术网

Reactjs React路由器4.0.0.6中的部分重定向

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

在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
开头的任何
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}