【发布时间】:2017-06-08 16:27:22
【问题描述】:
我正在开发一个 redux/react 应用程序。我们从很少的“连接”组件开始(即直接访问 redux 状态和调度动作的组件)。这导致每个组件将太多的 props 传递给它们的所有子级和子级等,并且顶级“连接”组件成为上帝类。
因此,我们正在连接更多组件,并且能够通过mapStateToProps 和mapDispatchToProps 直接访问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