【问题标题】:How to dispatch actions on location change with react router v4如何使用反应路由器 v4 调度位置更改操作
【发布时间】:2017-07-17 14:59:50
【问题描述】:

我正在使用 react-router-4.0.0-beta.4 和 redux,我正在尝试找出在路由更改时调度操作的最佳方式。我看到几个版本之前有一个用于此here 的 API/事件挂钩。但我看到它现在已经消失了。尝试做与 redux-router 所做的现代等价物。

【问题讨论】:

    标签: reactjs react-router react-redux


    【解决方案1】:

    似乎调度操作的最佳方式是在组件的componentWillMount()componentDidMount()componentWillUnmount() 方法中这样做。

    忽略下面的内容

    onEnter 道具。喜欢这里comet-frontend

    onEnter(下一个状态、替换、回调?)

    在即将进入路线时调用。它提供了下一个 路由器状态和重定向到另一条路径的功能。这将成为;这将是 触发钩子的路由实例。 https://github.com/ReactTraining/react-router/blob/master/docs/API.md#onenternextstate-replace-callback

    但是,仍然有 onChange 道具,完全按照您的描述进行。也许告诉我们你的问题到底是什么。因为好像你做错了什么。

    【讨论】:

    • 好吧,我想可能是这样,我在 github 上看到一些讨论暗示了这一点。我尝试逐字使用onChange 道具,但它似乎没有用。如果BrowserRouter 有一个用于位置更改的“全局”挂钩,那就太好了。
    • 是的。我真的不明白他们为什么决定摆脱这些道具。它使代码保持干净。
    【解决方案2】:

    因此,您必须将主应用程序组件包装在 withRouter 中,并根据 withRouter 传递的 props 中的 props 变化做出反应,例如 props.location.pathname

    你可以在这里看到关于它如何工作的讨论https://github.com/ReactTraining/react-router/issues/4603

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 2017-10-21
      • 2017-12-06
      • 2018-01-26
      • 2020-05-08
      • 1970-01-01
      • 2018-08-03
      • 2023-03-12
      相关资源
      最近更新 更多