在我的React应用程序中,我有这个:

  • 如果从 / 索引路径开始,将出现一个启动页面,您可以单击关闭启动并转到主页的内容 .

  • 如果从任何其他路径开始,则不会显示启动页面,当您从这些页面转到 / 路径时,启动页面仍然不会出现 .

在这两种情况下,我想在主页发生后初始化一些 window 事件监听器(即在您单击启动页面之后或从另一个页面导航到索引页面之后) .

目前,我实现这一点的方法是在Redux中保留一个 loadState 变量 .

  • 如果我从 / 路线开始,单击启动页面会将 loadState 设置为"loaded",并且会在 componentWillUpdate 生命周期内设置侦听器 .

  • 如果我从任何其他路线开始,在 componentDidMount 上, loadState 将设置为"loaded" . 然后,如果我导航到 / 路由,则会在 componentDidMount 上设置侦听器,因为我们检查 loadState 是否"loaded."

但是,我是一种避免这两种功能的方法 . 如果 componentWillUpdate 在初始渲染上运行,那将是理想的,因为我可以避免在 componentWillMount 生命周期内进行冗余检查 . 如果React Router具有最初呈现路径的内置生命周期,则更好的选择 .