Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用react路由器dom进行history.push_Javascript_Reactjs_React Redux_React Router_React Router Dom - Fatal编程技术网

Javascript 使用react路由器dom进行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

我正在使用下面提供的history.push从一个页面导航到另一个页面

从“反应路由器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,您能尝试一下吗。我希望我能给这个答案更多的评价。这很有帮助