当前位置: 首页 > 知识库问答 >
问题:

在返回promise(axios)后,如何重定向到react redux中的组件。我正在使用路由器4

齐甫
2023-03-14

我想创建一个身份验证系统。我在提交时制作了一个表单,使用ajax响应发送用户凭据并接收令牌作为回报。现在我想在收到令牌后重定向到主页。

我使用的是react router 4,redux thunk中间件,我曾尝试在上下文中执行此操作,但没有成功。

onSubmit(e){

  e.preventDefault();

  this.setState({isLoading:true});

  this.props.login(this.state).then(function(response){

    console.log('token', response.data.token);

    //Redirect to home component

  });

}

共有2个答案

龚奇逸
2023-03-14

只是对约翰尼上面所说的进行了扩展。这是react router文档中的一个很好的例子:

class Login extends React.Component {
  state = {
    redirectToReferrer: false
  }

  login = () => {
    fakeAuth.authenticate(() => {
    this.setState({ redirectToReferrer: true })
   })
  }

render() {
  const { from } = this.props.location.state || { from: { pathname: '/' } }
  const { redirectToReferrer } = this.state

  if (redirectToReferrer) {
    return (
      <Redirect to={from}/>
    )
  }

 return (
  <div>
    <p>You must log in to view the page at {from.pathname}</p>
    <button onClick={this.login}>Log in</button>
  </div>
  )
 }
}

所以你会:

//Redirect to home component

setState({loggedIn:true)}

在渲染函数中:

if (this.state.loggedIn) {
  return (<Redirect to='/home')
}
贾兴学
2023-03-14

为此,您可以使用重定向组件:https://reacttraining.com/react-router/web/api/Redirect

您可以有一个状态变量来指示用户是否已登录,并在用户登录后在then方法中将其设置为true。在render方法中,使用该状态控制重定向组件的渲染。

 类似资料:
  • 我想在单击登录页中的按钮后重定向到主页。但是,当我单击地址栏中的按钮时,主页的路径会显示出来(它重定向到主页)…但它不会呈现与该路径相关的组件。它仍然显示带有主页地址的登录页。因此,我必须刷新页面才能呈现主页。这里有什么问题??? 在我的登录页面中…这是我用于单击按钮的功能。。 在我的索引,js页面...

  • 我正在尝试使用react router(版本^1.0.3)做一个简单的重定向到另一个视图的操作,我只是觉得有些累。 我只需要将用法发送到“/login”,就这样。 我能做什么? 控制台中的错误: 未捕获的引用错误:未定义PropType 用我的路线归档

  • 我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将

  • 我想在我的子组件中有一个默认路由(使用设置),并自动将参数传递给它。我在文档中找不到如何做到这一点。我有一个具有以下路由的父组件: 以及子组件,其具有: 这当然会失败:我无法弄清楚如何将一些默认参数传递给第一个路由。我确实通过创建另一个没有参数的路由并将其用作默认值来启动它: 但这当然并不理想。到目前为止,我还没有找到比使用不带参数的路由,然后使用一些默认参数立即重定向更好的方法。难道没有更好的办

  • 首先,在get请求中,我显示一个表单,在提交表单时,它转到一个post url,在控制器中执行一些操作,然后返回另一个包含表单的视图。提交此表单后,我验证了一些内容,如果验证失败,我想重定向回一些错误,但不幸的是,laravel不允许我重定向回post方法。我有什么办法可以做到这一点吗? 我在laracast上看到过这个答案https://laracasts.com/discuss/channel

  • 如果axios api为空或初始状态为空,如何有条件地重定向到页面。在下面的代码中,我使用axios更新状态,用户信息在状态中可用,但代码继续调用在循环中。我试图实现的是,如果userinfo状态最初为空,则重定向到登录页面并进行身份验证。 我能够重定向罚款,但问题是与连续循环。即使用户信息存储重定向被调用(发生在循环中)