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

What's the logic behind how React Router processes onEnter?

本文关键字:背后 是什么 onEnter Router 何处理 处理 React      更新时间:2023-09-26

>react-router有一些关于如何处理onEnter/onLeave的文档,但我不明白为什么向上遍历树不会导致onEnter被触发?

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

  • /
  • /profile
  • /profile/:username

/导航到/profile再到/profile/boogers,onEnter 将被触发 3 次。但是,如果您从/profile/profile/boogers导航到/,则不会触发吗?我希望输入新路径总是触发onEnter事件,因为您要转到新的url路径?

谢谢你的时间!

也与这个问题有关。

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

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

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