Javascript 使用react路由器dom进行history.push
我正在使用下面提供的history.push从一个页面导航到另一个页面Javascript 使用react路由器dom进行history.push,javascript,reactjs,react-redux,react-router,react-router-dom,Javascript,Reactjs,React Redux,React Router,React Router Dom,我正在使用下面提供的history.push从一个页面导航到另一个页面 从“反应路由器dom”导入{withRouter} 我能够正确导航,但我有一个要求,如果我从a页移动到B页,我不应该被允许使用浏览器返回按钮返回到上一页 我知道这可以通过window.redirect实现,但我不想使用它。问题是整个状态和redux存储信息丢失。有人知道我是否可以使用withRouter并仍然能够达到上述要求。您可以使用历史记录.replace('/which_screen')替换堆栈中的当前页面 repla
从“反应路由器dom”导入{withRouter}
我能够正确导航,但我有一个要求,如果我从a页移动到B页,我不应该被允许使用浏览器返回按钮返回到上一页
我知道这可以通过window.redirect实现,但我不想使用它。问题是整个状态和redux存储信息丢失。有人知道我是否可以使用withRouter并仍然能够达到上述要求。您可以使用
历史记录.replace('/which_screen')
替换堆栈中的当前页面
replace(路径,[state])-(函数)
替换历史堆栈上的当前条目
第二种选择:
您可以使用下面的代码阻止用户返回历史记录
componentDidMount() {
const { history } = this.props;
window.onpopstate = function (event) {
history.go(1);
};
}
工作示例:
MDN参考:
无法清除会话历史记录或从非特权代码禁用后退/前进导航。最接近的可用解决方案是location.replace()方法,它用提供的URL替换会话历史记录的当前项
您可以使用
browserHistory.replace
而不是browserHistory.push
从浏览历史记录中删除。这样,如果用户转到B,他将无法转到A,而是转到A的前一个URL。谢谢你的这个功能。但问题是,所有的存储和状态信息都丢失了,所以您只想在一个页面中禁用浏览器后退按钮?是的,让我给您提供一个工作示例,给我一些时间更新ans,您能尝试一下吗。我希望我能给这个答案更多的评价。这很有帮助