Javascript react路由器redux重定向到绝对url
我正在迁移react应用程序,并尝试将其拆分。基本上,我希望将一些客户端反应路由重定向到绝对URL(或相对URL,但至少要使用服务器往返,在服务器往返中进行反向代理) 注意Javascript react路由器redux重定向到绝对url,javascript,reactjs,routing,react-router,react-router-redux,Javascript,Reactjs,Routing,React Router,React Router Redux,我正在迁移react应用程序,并尝试将其拆分。基本上,我希望将一些客户端反应路由重定向到绝对URL(或相对URL,但至少要使用服务器往返,在服务器往返中进行反向代理) 注意 反应路由器3.0.0 react路由器redux 4.0.7 该应用程序具有以下URL =>主页 =>第一条路线 =>第二条路线 =>第三条路线 现在一切都在里面 路由如下所示: <Provider store={store}> <Router history={history}>
- 反应路由器3.0.0
- react路由器redux 4.0.7
- 该应用程序具有以下URL
- =>主页
- =>第一条路线
- =>第二条路线
- =>第三条路线
<Provider store={store}>
<Router history={history}>
<Route path="/" component={Root}>
<IndexRoute component={Home} />
<Route path="/someroute1" component={Route1} />
<Route path="/someroute2" component={Route2} />
<Route path="/someroute3" component={Route3} />
</Route>
</Router>
</Provider>
目标是重定向,比如说,将“/”和“/someroute2”路由到静态URL(服务器URL)。因此:
- =>
- =>保持反应路由
- =>
- =>保持反应路由
我听说过Redirect和IndexRedirect组件,但我不知道如何正确使用它,而且,由于缺少react/react router,我不知道是否会有任何危险的副作用(例如在历史上)。我没有尝试过,但从语法上讲,你可以这样做:
<Route
path="/someroute2"
render={() => <Redirect to="http://anotherhost/anotherroute5" />}
/>
}
/>
部分基于@brub answer,我找到了一个使用哑组件的解决方案
import React, { Component } from 'react'
export default class MyRedirectRoute extends Component {
componentDidMount() {
window.location.href = //my url here
}
render() {
return null
}
}
我就这样通过
<Route path="/someroute3" component={MyRedirectRoute} />
尽管如此,我仍然没有意识到一些事情:
- 这是推荐的解决方案吗
- 是否有任何历史副作用
- 是否有比
更好(更多)的解决方案?我尝试了window.location.href
但没有成功这个.context.history
在接受我自己的答案之前,我正在等待反馈/更好的解决方案对此,您可能不需要React Router。React路由器的创建者使用
标记。使用路由的呈现属性,而不是组件。这样,您就可以指定要调用的函数,而不是要实例化的组件。在函数中,使用window.location.href
,以老式方式执行导航:
<Route
path="/someroute2"
render={() => {
window.location.href = "http://anotherhost/anotherroute5";
return null;
}}
/>
{
window.location.href=”http://anotherhost/anotherroute5";
返回null;
}}
/>
谢谢:)但这会导致heh-就像我说的“未经尝试”。我刚刚编辑了它,你可以尝试按上面的方式推送位置。哼:/不起作用。它在控制台中显示一个白色窗口,没有任何错误。它似乎在componentDidMount
内部完成了操作,请参见我的回答-我未编辑我的错误编辑-我认为您无法从render()调用导航函数。我通常在传奇中做有条件的导航。对于这个特定的用例,如果可能的话,我会在react代码之外处理重定向(nginx或其他东西)。我已经尝试过这样的解决方案render{()=>this.props.isLoggedIn?:}
使用完全相同的哑组件进行重定向。它将我重定向到签出页面,但在它完成加载之前,我将被重定向到重定向页面。Props isLoggedIn在我登录时更新为true,所以不是这样。有什么想法吗??