reactjs - 如何知道react-router是否可以返回并在react应用程序中显示后退按钮

标签 reactjs react-router html5-history

似乎没有 API 方法可以检测您是否可以从应用程序中的当前页面返回。人们可以检查历史长度,但这包括前向和后向堆栈。

我想仅当用户实际上可以返回时才显示后退按钮。

最佳答案

如果您有表示您在应用内进行路由的位置键,则可以检查 location.key。但如果您不这样做,则意味着您来自应用程序外部,或者您只是在新选项卡中打开应用程序等。

import { useHistory, useLocation } from "react-router-dom";
const history = useHistory();
const location = useLocation();

<Button
  onClick={() => {
    if (location.key) {
      history.goBack();
    }
  }}
  disabled={!location.key}
/>;

对于 V6 及更高版本:

import { useHistory, useLocation } from "react-router-dom";
const history = useHistory();
const location = useLocation();

<Button
  onClick={() => {
    if (location.key !== 'default') {
      history.goBack();
    }
  }}
  disabled={location.key === 'default'}
/>;

关于reactjs - 如何知道react-router是否可以返回并在react应用程序中显示后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385570/

相关文章:

javascript - 专门在 chrome 中使用 html5 API popState 和 pushState 的问题

javascript - 以不可变的方式更新子组件中父组件的状态

javascript - 访问React中子组件的refs

javascript - store.dispatch 不是函数

javascript - React-router 不显示组件

javascript - OwnProps Match 和 Params 未定义 React-Router V3

javascript - 意外 token < react 路由器组件中的错误

javascript - TypeError : this. setState 不是函数

reactjs - 在另一个组件 V6 中 react 路由

javascript - Knockout组件可以通过动态生成的&lt;script&gt;来注册吗?