【发布时间】:2017-11-07 13:04:04
【问题描述】:
用户登录后,我正在使用类似this 的代码在我的应用中重定向。代码如下所示:
import React, { Component } from 'react'
import { Redirect } from 'react-router'
export default class LoginForm extends Component {
constructor () {
super();
this.state = {
fireRedirect: false
}
}
submitForm = (e) => {
e.preventDefault()
//if login success
this.setState({ fireRedirect: true })
}
render () {
const { from } = this.props.location.state || '/'
const { fireRedirect } = this.state
return (
<div>
<form onSubmit={this.submitForm}>
<button type="submit">Submit</button>
</form>
{fireRedirect && (
<Redirect to={from || '/home'}/>
)}
</div>
)
}
}
触发成功登录后工作正常。但是有这样的情况,登录用户进入登录页面,应该会自动重定向到“主页”页面(或任何其他页面)。
如何在不渲染当前组件的情况下使用 Redirect 组件并且无需(据我了解 discouraged)强制推送到历史记录(例如在 componentWillMount 中)?
【问题讨论】:
-
您使用了错误的方法。重定向不应在组件内部单独使用。相反,您必须将组件与重定向一起放入
Route。请参阅the official docs 中的示例。 -
谢谢,是的,我的方法在某种程度上是错误的。我现在在我的路由器中定义了所有路由和重定向。
标签: javascript reactjs react-router-v4