首页 文章

react / redux:组件从状态获取数据而不进行API调用以获取该数据

提问于
浏览
2

我正在研究redux / react应用程序 . 我们从很少的“连接”组件开始(即,访问redux状态和直接调度操作的组件) . 这导致每个组件传递太多道具给他们所有的孩子,子孙等,以及顶级“连接”组件成为神级 .

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

我的问题是,子组件从状态树中获取数据是否可以,假设它的父进程发送了实际的API调用以将该数据导入状态树?

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

<blog id=123/> 组件将呈现博客帖子 . 它将进行API调用,在一次点击中,获取博客,并将其嵌套注释作为JSON .

该组件将呈现 <comments blog_id=123 /> 组件 . 这个子组件是否可以假设父组件已经处理了API调用来获取博客并且它尚未存在(即,API调用仍在进行中)?

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

我理解在这个人为的例子中,你可能只是将评论作为道具传递下来 . 但在我的现实生活中,它要复杂得多 .

所以问题是,组件说 "I'll render stuff from the state tree - but whoever uses me must make the API call in order for me to work properly" 是不好的做法

1 回答

  • 1

    当然没关系 . 这就是我接近它的方式 .

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

    如果有很多儿童组件或目标孩子在孩子的深处,我通常会尽量避免传递道具 . 从状态树中取出它的道具,从孩子到孩子的过境状态等等,这可能是理想的,也不那么麻烦 .

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

相关问题