像批评家上面提到的,你最好的选择将是使你的表单页面作为单独的组件,并委派浏览器导航的担忧反应-路由器。你可以在React Router docs阅读更多关于它的信息。下面,我已经展示了一些基本的东西,你可以添加到你的应用程序中,将表单重新分解为一些组件。
// index.js (or file where you add your App to dom)
import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
// App.js
import { Route } from 'react-router-dom'
// render
<Route exact path="/form/page1" render={(props) => (
<FormPage1
{...props}
necessaryProp={this.state.necessaryProp}
handleSubmit={this.props.handleSubmit} />
)} />
<Route exact path="/form/page2" render={(props) => (
<FormPage2
{...props}
necessaryProp={this.state.necessaryProp}
handleSubmit={this.props.handleSubmit} />
)} />
你可以玩弄使用您的网页组件的componentDidMount或componentWillMount生命周期事件验证...
要更改的页面,您可以提交表单,并处理它基于该做的网页#提交。另一种方法是在页面组件内部使用<Link to="/form/page2" />
。最后,您可以使用的第三种方法是在按钮上使用onClick处理程序执行验证。如果表单有效,请使用props.history.push('/form/page2')
以编程方式重定向...实现细节取决于您!
关键是React路由器抽象浏览器导航问题,处理跨浏览器效果,并且你正在寻找。
这不值得你重新发明。查看React-Router。 – gravityplanx
你为什么不在你的url中使用哈希,并使用'location.hash'来检查它们?或者使用'react-router'。 – Phil