useHistory 是 React Router 提供的一个 Hook,用于访问浏览器的历史记录并执行导航操作。它返回一个 history 对象,该对象包含以下主要方法:
1. push(path, state):
path: 要导航到的新路径。
state: (可选)要与新条目关联的状态对象。
这个方法会将一个新的条目添加到浏览器的历史记录中,并立即导航到新的路径。
2. replace(path, state):
path: 要导航到的新路径。
state: (可选)要与新条目关联的状态对象。
这个方法会替换当前的历史条目为新的条目,并立即导航到新的路径。
3. go(n):
n: 要前进或后退的条目数量。
如果 n 是正数,它会向前导航相应的条目数;如果 n 是负数,它会向后导航相应的条目数。
4. goBack():
这是一个便捷的方法,等同于 go(-1),用于后退到上一个历史条目。
5. goForward():
这是一个便捷的方法,等同于 go(1),用于前进到下一个历史条目。
6. block(prompt):
prompt: (可选)在用户尝试离开当前页面时显示的提示消息。
这个方法可以用来阻止用户的导航操作,通常在需要确认用户是否真的要离开当前页面的情况下使用。react router 6
7. listen(listener):
listener: 一个回调函数,当历史状态改变时会被调用。
这个方法可以用来监听历史状态的变化。
注意:在使用 useHistory Hook 时,你不需要传递任何参数,只需调用 useHistory() 即可获取 history 对象。然后,你可以使用这个对象来执行上述的导航操作。例如:
jsx代码: