reactjs - 我应该为 createBrowserHistory 提供一个单独的 history.js 吗?
问题描述
环顾四周的人似乎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();
并将该文件导入MySpecialComponent
解决方案
我单独创建一个history
对象而不使用它的唯一原因BrowserRouter
是如果我想做history.push
或者history.replace
在我无法访问路由器道具的某个地方。现在,如果我将历史记录创建为组件的属性,则无法将该history
对象导入其他文件中。所以我做了一个单独的history.js
,然后我可以在我的应用程序中任何我想要的地方导入该历史记录并使用它。
推荐阅读
- ios - 火库 | 本地存储数据而不同步到 Firestore 服务器
- java - Google 应用程序许可没有响应
- yii - Yii addForeignKey 未添加到 mysql 表索引
- java - 在 tom cat Web 应用程序管理器中部署大型战争文件
- ios - 通过代码获取 WKWebView 的当前内存使用情况?
- jquery - 有什么方法可以从下面给出的动画函数中获取 top 的当前值
- c# - sp 给出输出但 SqlDataReader 没有
- pagination - 如何在 ngx-bootstrap 分页中将值设置为(通过 TS 的当前页面)分页?
- angularjs - 我们可以在 Angular 1 应用程序中使用 Angular 2 库吗?
- python - 将包含列表的字典的值替换为列表的其他项