使用react-router-dom重定向到第三方URL

时间:2019-03-11 13:47:54

标签: reactjs react-router-v4 react-router-dom

我非常了解我想对组件进行条件渲染的react-router-dom。如果未登录use,则将他重定向到某个第三方URL

例如,下面的代码看起来很整洁并且工作正常

<Route exact path="/home" render={() => (
  isLoggedIn() ? (
    <Redirect to="/front"/>
  ) : (
   <Home />
  )
)}/>

在上面的示例中,如果我想重定向to https://www.google.com ,该怎么做?

如果我写

 <Redirect to="https://www.google.com"> it gives me error. 

如何重定向到第三方网站?

5 个答案:

答案 0 :(得分:2)

您可以将标签用于外部网址

<a href='https://domain.extension/external-without-params'>external</a>

但是您也可以提供这样的组件:

<Route path='/external' component={() => { window.location = 'https://domain.extension/external-without-params'; return null;} }/>

答案 1 :(得分:1)

您可以使用window.open()重定向到任何网站。

例如:

window.open('https://www.google.com');

代码中的实现重定向:

render () {
  if(this.isLogin) {
    return(/* your components*/);
  } else {
    window.open('https://www.google.com');
    return (<div></div>); //render function should return something
  }
}

您还可以指定目标属性或窗口名称,有关更多详细信息,请参见w3school tutorial about this function

答案 2 :(得分:1)

如果您使用的是 Typescript,您可能会在接受的答案中收到以下错误:

Type 'string' is not assignable to type 'Location'

要解决这个问题,您只需要使用 window.location.href

<Route path="/external" component={() => {window.location.href = config.UPGRADE_URL return null }} />

答案 3 :(得分:0)

请记住,您无法使用<Link /><NavLink />来执行此操作,因为它们主要用于在整个“单页应用程序”中进行路由。

您应该改用定位标记。 例如:<a href="https://www.google.com">Google</a>

答案 4 :(得分:0)

只需执行以下操作即可轻松使用按钮:

<button onClick={(e) => (window.location = 'https://www.google.com')}>Click me</button>