当路由器收到状态时,React 路由器 redux 滞后一个历史步骤

米修尔

这是一个带有完整代码的 repo 演示了这个问题 - https://github.com/Misiur/ReactRouterReduxBug

在线 - https://codesandbox.io/s/v88B5LG0

看看这个代码

class Main extends Component {
  componentWillReceiveProps(nextProps) {
    if (this.props.match.params.page !== nextProps.match.params.page) {
      console.log(`Page changed to ${nextProps.match.params.page}`);
    } else {
      console.log('Page did not change');
      console.log(newProps.location.pathname);
      console.log(newProps.history.location.pathname);
    }
  }

  render() {
    const page = this.props.match.params.page;

    return (
      <div>
        <strong>Current page is {page}</strong><br />
        <Link to="/1">Page 1</Link><br />
        <Link to="/2">Page 2</Link><br />
        <Link to="/3">Page 3</Link><br />
        <Link to="/4">Page 4</Link><br />
        <Link to="/5">Page 5</Link>
      </div>
    );
  }
}

const RawRouting = (props) => {
  // Do something with this.props.state
  // console.log(props);

  return (
    <Route path="/:page(\d+)?" component={Main} />
  );
};

const Routing = connect(state => ({ state }))(RawRouting);

const App = () => {
  return (
    <Provider store={store}>
      <ConnectedRouter history={history}>
        <Routing />
      </ConnectedRouter>
    </Provider>
  );
};

我们有Appwhich 脚手架 store 和 router,Routing它定义了路由connect状态,以及Main显示页面和页面链接的组件。

当您单击链接时,一切正常。但是,当您按下浏览器的后退按钮时,第一次 url 更改但路由参数没有更改,因为newProps.location.pathname落后了一个历史步骤newProps.history.location.pathname

我已经深入挖掘以找出导致它的原因,但没有找到原因:connect在我们的Routing. 当它被移除时,后退按钮正常工作。这不是解决方案,因为我需要那里的状态。

所以:

  1. 如何在不删除我的状态映射的情况下使后退/前进按钮工作
  2. 为什么会这样?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应路由器+ Redux?

来自分类Dev

使用React和Redux时,状态是未定义的对象,路由器

来自分类Dev

react native:与redux一起使用的最佳导航器/路由器组件

来自分类Dev

Redux路由器-刷新后如何重播状态?

来自分类Dev

反应:在路由器 onEnter 中获取 redux 状态

来自分类Dev

通用身份验证Redux和React路由器

来自分类Dev

PC到路由器到路由器,第一个路由器的IP是什么?

来自分类Dev

如何将路由器中的组件状态传递给另一个路由器组件

来自分类Dev

多步骤反应路由器导航

来自分类Dev

流路由器流星的历史

来自分类Dev

反应路由器哈希历史

来自分类Dev

反应路由器 Dom 历史

来自分类Dev

如何使路由器在另一个路由器内反应?

来自分类Dev

管理ui路由器状态历史记录

来自分类Dev

反应路由器+ Redux表单+编辑/新组件==失败

来自分类Dev

离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

来自分类Dev

路由器和专用路由器/历史问题

来自分类Dev

甚至在React(路由器)中发生时如何去另一个域/路由

来自分类Dev

路由器指向另一个IP

来自分类Dev

一个wifi路由器和另一个wifi路由器之间的区别?

来自分类Dev

如何在1个路由器下同时DMZ 2个路由器?

来自分类Dev

akka.net轮询组路由器-仅路由到一个路由

来自分类Dev

无法从路由器ping主机,但是从主机的两个路由器接口

来自分类Dev

奇怪的网络设置,2个不同的路由器-相同的MAC(不是路由器mac)

来自分类Dev

路由器如何找到下一跳路由器的MAC地址?

来自分类Dev

路由器内部的路由器

来自分类Dev

使用第一个路由器网络范围配置第二个路由器

来自分类Dev

如何将2个路由器与另一个路由器桥接?

来自分类Dev

一个AngularUI路由器状态共享范围中的两个视图

Related 相关文章

  1. 1

    反应路由器+ Redux?

  2. 2

    使用React和Redux时,状态是未定义的对象,路由器

  3. 3

    react native:与redux一起使用的最佳导航器/路由器组件

  4. 4

    Redux路由器-刷新后如何重播状态?

  5. 5

    反应:在路由器 onEnter 中获取 redux 状态

  6. 6

    通用身份验证Redux和React路由器

  7. 7

    PC到路由器到路由器,第一个路由器的IP是什么?

  8. 8

    如何将路由器中的组件状态传递给另一个路由器组件

  9. 9

    多步骤反应路由器导航

  10. 10

    流路由器流星的历史

  11. 11

    反应路由器哈希历史

  12. 12

    反应路由器 Dom 历史

  13. 13

    如何使路由器在另一个路由器内反应?

  14. 14

    管理ui路由器状态历史记录

  15. 15

    反应路由器+ Redux表单+编辑/新组件==失败

  16. 16

    离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

  17. 17

    路由器和专用路由器/历史问题

  18. 18

    甚至在React(路由器)中发生时如何去另一个域/路由

  19. 19

    路由器指向另一个IP

  20. 20

    一个wifi路由器和另一个wifi路由器之间的区别?

  21. 21

    如何在1个路由器下同时DMZ 2个路由器?

  22. 22

    akka.net轮询组路由器-仅路由到一个路由

  23. 23

    无法从路由器ping主机,但是从主机的两个路由器接口

  24. 24

    奇怪的网络设置,2个不同的路由器-相同的MAC(不是路由器mac)

  25. 25

    路由器如何找到下一跳路由器的MAC地址?

  26. 26

    路由器内部的路由器

  27. 27

    使用第一个路由器网络范围配置第二个路由器

  28. 28

    如何将2个路由器与另一个路由器桥接?

  29. 29

    一个AngularUI路由器状态共享范围中的两个视图

热门标签

归档