React Router如何处理onEnter背后的逻辑是什么?

时间:2016-03-07 22:57:44

标签: javascript reactjs react-router

react-routeronEnter / onLeave的处理方式有some docs,但我不明白为什么遍历 up 树不会导致onEnter被触发?

例如,如果您有以下路线:

  • /
  • /profile
  • /profile/:username

/导航到/profile/profile/boogers,onEnter将被触发3次。但是,如果您从//profile导航到/profile/boogers,则不会触发?我希望进入一个新的路径始终触发onEnter事件,因为你要去一个新的url路径?

谢谢你的时间!

this issue相关。

1 个答案:

答案 0 :(得分:3)

路线被视为分层。当您第一次导航到/ profile onEnter时,会在/ profile和/上触发。然后,当您从/ profile导航到/时,不会触发onEnter,因为您认为您已经在该父路线中。

所以,我认为这在技术上是答案,但我也认为这是愚蠢的,恕我直言。它确实给你留下了一些严重的缺陷,OP已经在react-router的链接github问题中指出了这一点。

相关的是,如果你从/ users / a导航到/ users / b,根本就没有钩子。您实施componentWillReceiveProps并查看userId是否已更改的唯一选择。关注点分离不佳。更多信息:https://github.com/reactjs/react-router/issues/2547