重定向不起作用;而{this.props.history}却可以

时间:2019-10-21 10:20:33

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

虽然操作成功,但是重定向不起作用,但是history.replace起作用。 为什么?

tree_limit

请转到登录页面并进行检查。 Codesandbox链接-https://codesandbox.io/s/winter-hooks-s9vgx

3 个答案:

答案 0 :(得分:2)

您正在从onSubmit方法调用重定向JSX组件。但是您不能这样做,因为您需要从render方法中返回JSX元素,这就是为什么您需要使用history to update route

     onSubmit={(values, { resetForm, setErrors, setSubmitting }) => {
        setTimeout(() => {
          console.log("Logging in", values);
          setSubmitting(false);
          this.props.history.replace("/dashboard");
        }, 500);

答案 1 :(得分:1)

您必须使用斜杠:

to='/dashboard'

答案 2 :(得分:1)

就像@Shubham Khatri所说的那样,但是如果您想使用<Redirect>,则可以创建一个状态并检测是否已记录状态,然后像this那样将其重定向。

变化正在增加

 this.state = {
      isLoggedIn: false
    };

在渲染中

if (this.state.isLoggedIn) return <Redirect to="/dashboard" />;

在onSubmit

this.setState({ isLoggedIn: true });