像批評家上面提到的,你最好的選擇將是使你的表單頁面作爲單獨的組件,並委派瀏覽器導航的擔憂反應-路由器。你可以在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