我在页面上有一些过滤器。点击返回后,我想一一返回过滤后的页面。
就像我在页面上一样,上面有 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>
);
};
答案 0 :(得分:0)
我在这里看到两个问题:-
BackBtn
。useHistory
是您从 history
导入的 BackBtn
组件的子组件时,Router
钩子才会返回有效的 react-router-dom
对象(可以是 { {1}}、BrowserRouter
等)。目前 HashRouter
是 history
,这意味着 undefined
不是 BackBtn
组件的子组件。这是一个有效的沙箱:-
答案 1 :(得分:0)
Uncaught TypeError: Cannot read property 'go' of undefined for history.go(-1)
表示历史未定义。尝试在 app.js 中使用 useHistory 函数并添加历史记录作为道具。