2016-03-07 58 views
2

react-router对如何onEnter/onLeave的处理some docs,但我不明白为什么穿越树不会导致的OnEnter被触发?React Router如何处理onEnter的逻辑是什么?

例如,如果您有以下途径:

  • /
  • /profile
  • /profile/:username

而且从//profile导航到/profile/boogers,的OnEnter将被触发3次。但是,如果您从/profile/profile/boogers导航到/,它不会被触发?我期望通过触发一个onEnter事件来进入一个新的路径,因为你要去一个新的url路径?

谢谢你的时间!

也与this issue相关。

+0

你为什么不问维护者? – Mathletics

+0

哦,[你确实](https://github.com/reactjs/react-router/issues/2256#issuecomment-192544231)。 SO可以帮助你解决技术问题,但是我们不能告诉你为什么我们不保留在回购中做出的决定! – Mathletics

+2

所以这是值得downvote?如果我这样做是诅咒,如果我不这样做,该死的。维护人员不会告诉我任何事情,现在社区也不会帮忙 –

回答

3

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

所以,我认为这在技术上是答案,但我也认为这是愚蠢的,恕我直言。它确实给你带来了一些严重的缺陷,OP已经在反应路由器的链接github问题中指出了这一点。

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

相关问题