不用 import { useHistory } from 'react-router-dom'; 如何使用 history
时间: 2024-02-15 11:01:35 浏览: 149
关于react-router/react-router-dom v4 history不能访问问题的解决
如果你不想使用 `useHistory` 钩子来获取 `history` 对象,也可以通过 `React` 的 `context` API 直接获取 `history` 对象。
具体用法如下:
1. 在 `App.js` 文件中,通过 `react-router-dom` 库的 `BrowserRouter` 组件包裹应用程序:
```javascript
import { BrowserRouter } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
{/* 应用程序的其他组件 */}
</BrowserRouter>
);
}
```
2. 在需要访问 `history` 对象的组件中,通过 `React` 的 `context` API 获取 `history` 对象:
```javascript
import React from 'react';
function MyComponent() {
return (
<React.Fragment>
<button onClick={() => window.history.pushState(null, null, '/new-route')}>
Navigate to New Route
</button>
</React.Fragment>
);
}
```
在上面的例子中,我们通过 `window.history` 对象调用 `pushState` 方法来实现导航。需要注意的是,这种方法只适用于修改浏览器历史记录的场景,而不能在应用程序中创建新的路由。
如果你需要在应用程序中创建新的路由,还是建议使用 `react-router-dom` 库提供的 `useHistory` 钩子来获取 `history` 对象,以便更好地控制路由。
阅读全文