useHistory
如果您使用React> 16.8.0和功能组件,则React Router> 5.1.0中会有一个新的钩子。
import { useHistory } from "react-router-dom";
function HomeButton() {
const history = useHistory();
function handleClick() {
history.push("/home");
}
return (
<button type="button" onClick={handleClick}>
Go home
</button>
);
}
使用React Router v4,您可以采用三种方法在组件内进行编程路由。
React Router主要是history
库的包装器。history
通过浏览window.history
器和哈希历史记录为您处理与浏览器的交互。它还提供了内存历史记录,这对于没有全局历史记录的环境很有用。这在移动应用程序开发(react- native
)和使用Node进行单元测试中特别有用。
一个history
实例有用于导航两种方法:push
和replace
。如果您将history
视为已访问位置的数组,push
则将一个新位置添加到该数组中,replace
并将该数组中的当前位置替换为新位置。通常,您将push
在导航时使用该方法。
在早期版本的阵营路由器,你必须创建自己的history
实例,但在第4版的<BrowserRouter>
,<HashRouter>
和<MemoryRouter>
组件将创建一个浏览器,哈希和内存的实例为您服务。React Router history
通过router
对象下的上下文使与路由器关联的实例的属性和方法可用。