我应该为createBrowserHistory使用单独的history.js吗?

时间:2019-03-13 12:11:05

标签: reactjs react-router react-router-v4 browser-history react-router-dom

周围的人似乎在单独的fetch("/api/v1/legacy/tenant-shop", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(dataToSubmit), }) .then(response => { console.log("THIS RESPONSE IS WORKING", response.status); return response; // <---- this is important }) .then(response => { if (response && response.status === 201) { console.log("BUT IT NEVER GOES THERE"); this.props.router.push("/congratilations"); } else { console.log( "THE RESULT OF THIS CONSOLE IS NULL", response && response, ); } }); 文件中使用createBrowserHistory,我很好奇为此创建单独文件的确切原因是什么。

我在想什么

history.js

将其包含在构造函数中是一种不好的方法,我应该制作一个单独的import { createBrowserHistory } from 'history'; class MySpecialComponent extends Component { constructor() { super(); this.history = createBrowserHistory(); } } <Router history={this.history}> <div> <Route path="/" render={() => <RootComponent />} exact /> <Route path="/confirm" render={() => <ConfirmComponent />} /> </div> </Router> 并包含以下内容:

history.js

并将该文件导入import { createBrowserHistory } from 'history'; export default createBrowserHistory();

1 个答案:

答案 0 :(得分:0)

我单独创建history对象而不使用BrowserRouter的唯一原因是,如果我想在某个地方做history.pushhistory.replace而不使用可以访问路由器道具。 现在,如果我将历史记录创建为组件的属性,则无法将该history对象导入其他文件。 因此,我创建了一个单独的history.js,然后可以在应用程序中的任意位置导入该历史记录并使用它。