首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该从React组件调用异步API吗?

我应该从React组件调用异步API吗?
EN

Stack Overflow用户
提问于 2016-05-06 07:16:37
回答 1查看 2.1K关注 0票数 3

我意识到这个问题以前就有人问过,这个话题在Redux社区中已经被广泛讨论过了,但是我还没有看到从这个角度来处理这个问题:错误消息

在大多数例子中,使用React + Redux +一些中间件(redux承诺和redux-thunk),外部api调用是在动作创建者内部完成的。然后,API调用的结果会影响应用程序状态,并给出成功案例或错误案例。

我的反驳:

API调用结果中的主要感兴趣方是组件,特别是因为它必须经常向用户显示错误消息。错误消息最好设置为组件状态。在componentWillMount上更容易“清理”。无需创建操作,只需清除应用程序级别的错误状态。

所有API调用都应该从一个组件中进行,它应该决定要调用哪个操作创建者。动作创建者就变成了返回对象的函数。没有副作用。

我再次强调,这个“获取”是基于这样一个事实,即大多数情况下,组件都需要处理错误消息。那么,为什么不调用api并处理那里的错误呢?一切顺利,打电话给行动创作者。事情变糟了,显示出一个错误。另外,我不认为整个应用程序都会重复API调用。毕竟,React试图执行模块化和自上而下的数据流。两个不同的组件实际上不应该调用相同的api。不过,他们可以调用相同的动作创建者,这很好。考虑一下注册并注册。不同的api端点。相同的最终状态(authenticated: true)

不管怎样,这是我对它的看法。如果组件内部的API调用是个好主意,我希望有更多经验的人会回答。谢谢。

编辑:刚刚在媒体上创建了这个帖子,希望这能更好地解释我的论点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-06 14:06:15

有点太开放了,想不出一个“解决方案”,但这里有一个简短的答案。

首先,在componentWillMount上更容易清理是什么意思?很多时候,api调用都是在已经挂载的组件上完成的,比如注册或登录组件。API调用发生在单击按钮时,而不是在其挂载时。

另外,API调用在外部reason组件(假设您有像redux这样的数据处理框架)之外执行的主要原因是库被用作视图层。组件呈现声明性反映应用程序状态的HTML。当登录API调用无法进行身份验证时,应用程序状态将发生更改,结果是View。如果您开始在组件中处理API响应,您可能会遇到不同步状态的问题。

例如,用户使用错误的凭据登录10次,并被“锁定”。你如何处理这个错误?您可能会添加一些逻辑来处理这些错误。如果应用程序的其他部分需要对这个错误做出反应呢?现在,您开始根据这些错误触发操作,并从本质上回到完全从操作创建者发出API调用,而操作创建者恰好存在于组件中。

现在,这主要适用于大型应用程序。如果应用程序足够小,并且像redux这样的状态管理框架只是添加膨胀,那么在组件中处理API调用是完全合理的。但是,如果它是一个大型应用程序,我仍然强烈建议将API逻辑保留在动作创建者中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37066494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档