javascript - 在React-router中拦截/处理浏览器的后退按钮?

标签 javascript reactjs react-router material-ui

我正在使用 Material-ui 的选项卡,这些选项卡是受控制的,我将它们用于 (React-router) 链接,如下所示:

    <Tab value={0} label="dashboard" containerElement={<Link to="/dashboard/home"/>}/>
    <Tab value={1} label="users" containerElement={<Link to="/dashboard/users"/>} />
  <Tab value={2} label="data" containerElement={<Link to="/dashboard/data"/>} />

如果我当前正在访问仪表板/数据并单击浏览器的后退按钮 我(例如)转到仪表板/用户,但突出显示的选项卡仍然保留在仪表板/数据上(值=2)

我可以通过设置状态来改变,但我不知道如何处理按下浏览器后退按钮时的事件?

我发现了这个:

window.onpopstate = this.onBackButtonEvent;

但每次状态更改时都会调用此函数(不仅在后退按钮事件上)

最佳答案

使用react-router使工作变得简单:

import { browserHistory } from 'react-router';

componentDidMount() {
    this.onScrollNearBottom(this.scrollToLoad);

    this.backListener = browserHistory.listen((loc, action) => {
      if (action === "POP") {
        // Do your stuff
      }
    });
  }

componentWillUnmount() {
    // Unbind listener
    this.backListener();
}

关于javascript - 在React-router中拦截/处理浏览器的后退按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342195/

相关文章:

javascript访问多维对象不起作用

javascript - 在 react 中映射数据时隔离函数

javascript - 解析嵌套的 javascript 数组

javascript - 如何修复: Warning: Functions are not valid as a React child

javascript - 如果react-router-dom不匹配任何路由,则页面重新加载

javascript - React 属性无法正常工作

javascript - 如何通过 PHP 连接 javascript 和 MySQL?

javascript - 使用计时器更新 d3 生成的圆圈的位置

javascript - 使用插入的 javascript 属性获取 url,但 UTF-8 字符不断出现在控制台中导致 404

javascript - 如何在没有参数的情况下获得 react 路由器原始网址?