Reactjs 如何仅为特定组件禁用浏览器后退按钮

Reactjs 如何仅为特定组件禁用浏览器后退按钮,reactjs,react-router,Reactjs,React Router,我有3个部分: 登录 仪表板 工作空间 一旦用户成功登录,他将被导航到仪表板。从仪表板,他可以导航到工作区。 条件:1.登录后,导航到仪表板,用户应能够通过单击浏览器后退按钮返回登录页面。2.但他可以从工作区向后导航到仪表板 问题:未达到条件2。一旦我从仪表板导航到工作区,我就无法通过单击“浏览器后退”按钮导航回仪表板 登录码 login(newUser).then(res => { if(res === "NULL")

我有3个部分: 登录 仪表板 工作空间

一旦用户成功登录,他将被导航到仪表板。从仪表板,他可以导航到工作区。 条件:1.登录后,导航到仪表板,用户应能够通过单击浏览器后退按钮返回登录页面。2.但他可以从工作区向后导航到仪表板

问题:未达到条件2。一旦我从仪表板导航到工作区,我就无法通过单击“浏览器后退”按钮导航回仪表板

登录码

login(newUser).then(res => { 

                if(res === "NULL")                        
                {
                    this.setState({confirmPswdShow: true});
                }else if(res === "wrongPassword")          
                {
                    const password ="password invalid";
                    this.setState({authPassword : password});
                }else{                                       
                   window.history.pushState(null, null, window.location.href);
                    window.onpopstate = function(event) {
                        window.history.go(1);
                    };              
                    this.props.history.push("/Dashboard");
                }
            })
仪表板代码

openProjectCreate(details){
        console.log(details);
        openProject(details)
        .then(res => {
            console.log(res);
            this.props.history.push("/WorkSpace");
        })
    }

您不应该覆盖窗口上的pop功能。要禁用返回登录,只需在历史记录中替换其URL即可:

login(newUser)。然后(res=>{
如果(res==“NULL”){
这是我的国家({
confirmPswdShow:true
});
}否则如果(res==“错误密码”){
const password=“密码无效”;
这是我的国家({
authPassword:密码
});
}否则{
this.props.history.replace({
路径名:'/Dashboard'
});
this.props.history.push(“/Dashboard”);
}
})

您导航到dashboard,然后单击要导航到工作区的内容,然后单击back按钮返回dashboard不起作用?你能给我们看一些代码吗?当然…我会添加代码是的…从工作区,我应该能够在浏览器后退按钮的帮助下导航回仪表板。你为什么添加这个?window.onpopstate=函数(事件){window.history.go(1);};使上一页不会出现在单击浏览器的bakward按钮时