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

Reactjs react/redux:组件从状态获取数据,而不进行API调用来获取该数据,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在开发redux/react应用程序。我们从很少的“连接”组件开始(即,访问redux状态并直接分派操作的组件)。这导致每个组件向其所有子级、子级等传递了太多的道具,顶级“连接”组件变成了上帝类 因此,我们正在连接更多的组件,并且能够通过MapStateTrops和mapDispatchToProps直接访问redux状态和分派操作。这里的情况要好得多,丹·阿布拉莫夫推荐: 我的问题是,假设子组件的父组件已经发送了执行实际API调用以将数据获取到状态树中的操作,那么子组件是否可以从状态树中获

我正在开发redux/react应用程序。我们从很少的“连接”组件开始(即,访问redux状态并直接分派操作的组件)。这导致每个组件向其所有子级、子级等传递了太多的道具,顶级“连接”组件变成了上帝类

因此,我们正在连接更多的组件,并且能够通过
MapStateTrops
mapDispatchToProps
直接访问redux状态和分派操作。这里的情况要好得多,丹·阿布拉莫夫推荐:

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

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

组件将呈现博客文章。它将发出一个API调用,在一次点击中,获取博客及其作为JSON的嵌套注释

该组件将呈现一个
组件。子组件是否可以假定父组件已经处理了API调用以获取博客及其嵌套注释,因此只从状态树中获取注释,如果数据还不存在(即API调用仍在进行),则优雅地不呈现任何内容

如果没有,还有什么选择

我理解在这个人为的例子中,你可能只是把评论作为道具传下去。但在我的现实生活中,情况要复杂得多


所以问题是,组件说“我将从状态树中呈现内容-但无论谁使用我,都必须进行API调用以使我能够正常工作”,这是一种不好的做法吗。我就是这么做的

在您的示例中,子组件在向其传递适当的道具或连接到它的状态之前不会呈现任何内容。您可以将其传递给该子级,也可以从Redux状态树中获取它,这在您的案例中是可行的

如果有很多子组件,或者目标子深入到子组件中,我通常会尽量避免传递道具。从状态树中获取它的道具,将状态从一个孩子传递到另一个孩子,这样可能比较理想,也不那么麻烦


利用
mapstatetops
函数只传递已定义的道具,并允许组件渲染给定的道具。

当然可以。我就是这么做的。子组件将不会呈现任何内容,直到将适当的道具传递给它或连接到它的状态。您可以将其传递给这个孩子,或者从Redux状态树中获取它,这在您的案例中是有效的。谢谢。我想是的,但只是想确定一下。加上这个作为回答,我很乐意接受。