未捕获的类型错误:无法读取 history.go(-1) 的未定义属性“go”

时间:2021-07-05 06:00:07

标签: javascript reactjs

我在页面上有一些过滤器。点击返回后,我想一一返回过滤后的页面。

就像我在页面上一样,上面有 3 个过滤器。我应用了过滤器 1,然后应用了过滤器 2。一旦我点击返回,我应该转到 filter1 页面,然后是主页。但它不起作用。一旦我点击返回,它就会显示
未捕获的类型错误:无法读取未定义的属性“go”

import { useHistory } from 'react-router-dom';

const backBtn = ({ href }) => {
  const history = useHistory();

  function handleClick() {
    if (href) {
      history.push(href);
    } else {
      history.go(-1);
    }
  }

  return(
    <button onClick={handleClick}> Back
    </button>

  );
};

2 个答案:

答案 0 :(得分:0)

我在这里看到两个问题:-

  • 组件名称应以大写字母开头,例如 BackBtn
  • 只有当 useHistory 是您从 history 导入的 BackBtn 组件的子组件时,Router 钩子才会返回有效的 react-router-dom 对象(可以是 { {1}}、BrowserRouter 等)。目前 HashRouterhistory,这意味着 undefined 不是 BackBtn 组件的子组件。

这是一个有效的沙箱:-

Edit react-router-useHistory-stackoverflow

答案 1 :(得分:0)

Uncaught TypeError: Cannot read property 'go' of undefined for history.go(-1)

表示历史未定义。尝试在 app.js 中使用 useHistory 函数并添加历史记录作为道具。