Reactjs react router dom history.goBack()不适用于Firefox和Safari
我有这样一个组件(简化版)Reactjs react router dom history.goBack()不适用于Firefox和Safari,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,我有这样一个组件(简化版) import React,{Fragment,useffect,useState}来自'React'; 从“react router dom”导入{Link,useHistory,useParams}; 常量MyComponent=()=>{ 让历史=使用历史(); 康斯特把手支架=()=>{ console.log('返回…'); history.go(-1);//或history.goBack(); }; 返回( 返回 ); } 它在chrome中的工作与预期一
import React,{Fragment,useffect,useState}来自'React';
从“react router dom”导入{Link,useHistory,useParams};
常量MyComponent=()=>{
让历史=使用历史();
康斯特把手支架=()=>{
console.log('返回…');
history.go(-1);//或history.goBack();
};
返回(
返回
);
}
它在chrome中的工作与预期一样。在Firefox和safari中根本不起作用。控制台显示handleGoBack函数按预期调用,但history.goBack仅在chrome上调用。
有什么想法吗?问题不在于您提供的代码,而在于其他方面。我是根据您的代码片段创建的,
history.go(-1)
在最新版本的Firefox和Safari中运行我刚刚遇到了完全相同的问题。因此,在代码中,您放置了如下链接:
<Link to="#" onClick={handleGoBack}>< Back</Link>
返回
我在firefox中看到了这一点,它被呈现为一个锚标记,其url作为当前url。
因此,我只是用一个按钮替换了
链接
,并像往常一样处理onclick事件,它就像一个符咒一样工作。这就是我在使用React路由器时的工作原理:
goBack()可以工作,但我必须检查“/”并在达到该值时停止。历史记录计数业务不起作用,因此我必须搜索“/”路径,以知道何时隐藏/禁用“Yes,history.go(-1)”对我有效,谢谢。如果有人在旧浏览器上寻找解决方案,zsajjad将在此处发布更长的解决方法
<Link to="#" onClick={handleGoBack}>< Back</Link>
import React from "react";
import { withRouter } from "react-router";
import { NavBar, Icon } from "antd-mobile";
import MainSearchContainer from "../components/MainSearchContainer";
import { render } from "@testing-library/react";
function PageHeader({location, history, db}) {
const appTitle = "My App";
return (
<React.Fragment>
<NavBar
icon={location.pathname !== "/" ? <Icon type="left" /> : ""}
onLeftClick={() => { history.goBack(); render(); } }
mode="dark"
rightContent={[<Icon key="1" type="ellipsis" />]}
>
{appTitle}
</NavBar>
<MainSearchContainer db={db} history={history} />
</React.Fragment>
);
}
export default withRouter(PageHeader);