【问题标题】:react redux change query params with components用组件反应 redux 更改查询参数
【发布时间】:2017-12-16 09:44:35
【问题描述】:

我有一个使用 redux、react-router、react-router-redux 的同构反应应用程序,我想将我的组件与 url 查询参数绑定,当查询参数更改时,向 API 发送请求并更新我的状态,最后获取数据。 我知道 react-router-redux 它会自动更新我的状态。 我还想在获取数据时向用户显示预加载器(微调器)。 为这个问题编写动作创建者的最佳方法是什么?谢谢

【问题讨论】:

    标签: javascript reactjs redux react-router react-router-redux


    【解决方案1】:

    我想在获取数据时向用户显示预加载器(微调器)

    data 属性传递给您的组件。当它是undefined 时,显示一个微调器。

    const MyComponent = (props) => {
      if (!props.data) return <Spinner />
      ...
    }
    

    当查询参数改变时,向 API 发送请求并更新我的状态,最后获取数据

    最简单的解决方案(这可能会根据您的需要变得相当复杂)是在组件的生命周期挂钩上触发此逻辑。

    当路由改变时,react-router 使用典型的配置,如果你之前在不同的路由上会导致组件渲染,如果你之前在相同的路由上会更新组件(即相同的路径,但不同的路径)查询参数)。

    所以对于第一种情况,使用componentDidMount,对于第二种情况,使用comonentDidUpdate(prevProps, prevState)生命周期钩子。

    要将异步 API 调用映射到 redux 操作,请使用 redux-thunk 之类的库,或者可能更适合此用例,redux-promise-middleware。如何使用这些对我来说有点深入,但它们都有很好的文档。

    最后,您需要将这些操作映射到 reducer 中,将响应数据放在状态树中的某个位置,然后使用 react-redux 将该状态树中的位置绑定到组件上的 data 属性,正如我之前提到的。

    【讨论】:

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