【问题标题】:react / redux: components fetching data from state without making the API call to get that datareact / redux:组件从状态中获取数据而无需调用 API 来获取该数据
【发布时间】:2017-06-08 16:27:22
【问题描述】:

我正在开发一个 redux/react 应用程序。我们从很少的“连接”组件开始(即直接访问 redux 状态和调度动作的组件)。这导致每个组件将太多的 props 传递给它们的所有子级和子级等,并且顶级“连接”组件成为上帝类。

因此,我们正在连接更多组件,并且能够通过mapStateToPropsmapDispatchToProps 直接访问redux 状态和调度操作。它更好,由 Dan Abramov 推荐:https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.lye71jwmx

我的问题是,假设子组件的父组件已发送执行实际 API 调用以将该数据放入状态树的操作,那么子组件是否可以从状态树中获取数据?

举个具体的例子,使用经典的“博客”应用:

<blog id=123/> 组件将呈现一篇博文。它将发出一个 API 调用,一键获取博客及其嵌套的 cmets 作为 JSON。

该组件将呈现一个<comments blog_id=123 /> 组件。该子组件是否可以假设父组件已处理 API 调用以获取博客及其嵌套的 cmets,因此只需从状态树中获取 cmets,并且如果数据没有则优雅地不渲染任何内容是否存在(即 API 调用仍在进行中)?

如果没有,这里有什么替代方案?

我理解在这个人为的示例中,您可能只是将 cmets 作为道具传递下来。但在我的现实生活示例中,它要复杂得多。

所以问题是,组件说 “我将从状态树中渲染内容 - 但任何使用我的人都必须调用 API 才能让我正常工作”是不是不好的做法强>

【问题讨论】:

  • 当然没关系。我就是这样处理它的。在将适当的道具传递给它或连接到它的状态之前,子组件不会渲染任何东西。你可以将它传递给这个孩子,或者从 Redux 状态树中获取它,这在你的情况下是可行的。
  • 谢谢。我是这么想的,但只是想确定一下。将其添加为答案,我很乐意接受。

标签: reactjs redux react-redux


【解决方案1】:

当然没关系。我就是这样处理它的。

在您的示例中,子组件不会呈现任何内容,直到将适当的道具传递给它或连接到它的状态。你可以将它传递给这个孩子,或者从 Redux 状态树中获取它,这在你的情况下是可行的。

如果有很多子组件或者目标子组件在子组件的深处,我通常会尽量避免传递 props。从状态树中获取它的道具,将状态从子级传递到子级等等,这可能是理想的并且不那么麻烦。

利用mapStateToProps 函数仅传递定义的道具,并允许组件呈现给定的内容。

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-08-01
    相关资源
    最近更新 更多