this.props.history.push() 跳过中间页
this.props.history.push() skips middle page
我查看了教程并在做一个与路由器相关的小项目。
我的项目中有 3 个页面 now.namely 登录、验证和主页。在所有页面上,我都有一个提交按钮,如下所示。
<button type="submit" onClick= {this.onSubmit()}>next page name</button>
我的登录和验证页面的onSubmit方法分别如下:
this.props.history.push('/verify');
this.props.history.push('/home');
这些是我的进口商品:
import {
BrowserRouter as Router,
Switch,
Route,
NavLink,
useRouteMatch} from "react-router-dom";
当没有首页时,从登录页面导航到验证非常好;
但是当我添加第三页时; "Home"页面,当我点击登录页面上的提交按钮时,它直接带我 跳转到“Home”页面,跳过“Verify”页面。
请指导我哪里出错了!谢谢!
您必须将按钮代码更改为如下内容:
<button type="submit" onClick= {()=>this.onSubmit()}>next page name</button>
或类似这样的东西:
<button type="submit" onClick= {this.onSubmit}>next page name</button>
因为它 onClick 获得了一个回调函数,而你正在调用其中的一个函数
push
是一个同步动作,所以它确实加载了 /verify
路由,但它很快就变成了 /home
路由。如果你想正确加载 /verify
你可以从路由中重定向到主页,而不是在 onSubmit
方法中。
此外,正如 Mahdi 提到的,您不应该直接从 onClick
调用该函数。您需要传递一个回调:
<button type="submit" onClick= {this.onSubmit}>next page name</button>
有关此的更多信息,请参阅此 link。
我查看了教程并在做一个与路由器相关的小项目。 我的项目中有 3 个页面 now.namely 登录、验证和主页。在所有页面上,我都有一个提交按钮,如下所示。
<button type="submit" onClick= {this.onSubmit()}>next page name</button>
我的登录和验证页面的onSubmit方法分别如下:
this.props.history.push('/verify');
this.props.history.push('/home');
这些是我的进口商品:
import {
BrowserRouter as Router,
Switch,
Route,
NavLink,
useRouteMatch} from "react-router-dom";
当没有首页时,从登录页面导航到验证非常好; 但是当我添加第三页时; "Home"页面,当我点击登录页面上的提交按钮时,它直接带我 跳转到“Home”页面,跳过“Verify”页面。
请指导我哪里出错了!谢谢!
您必须将按钮代码更改为如下内容:
<button type="submit" onClick= {()=>this.onSubmit()}>next page name</button>
或类似这样的东西:
<button type="submit" onClick= {this.onSubmit}>next page name</button>
因为它 onClick 获得了一个回调函数,而你正在调用其中的一个函数
push
是一个同步动作,所以它确实加载了 /verify
路由,但它很快就变成了 /home
路由。如果你想正确加载 /verify
你可以从路由中重定向到主页,而不是在 onSubmit
方法中。
此外,正如 Mahdi 提到的,您不应该直接从 onClick
调用该函数。您需要传递一个回调:
<button type="submit" onClick= {this.onSubmit}>next page name</button>
有关此的更多信息,请参阅此 link。