我意识到这个问题以前就有人问过,这个话题在Redux社区中已经被广泛讨论过了,但是我还没有看到从这个角度来处理这个问题:错误消息。
在大多数例子中,使用React + Redux +一些中间件(redux承诺和redux-thunk),外部api调用是在动作创建者内部完成的。然后,API调用的结果会影响应用程序状态,并给出成功案例或错误案例。
我的反驳:
API调用结果中的主要感兴趣方是组件,特别是因为它必须经常向用户显示错误消息。错误消息最好设置为组件状态。在componentWillMount上更容易“清理”。无需创建操作,只需清除应用程序级别的错误状态。
所有API调用都应该从一个组件中进行,它应该决定要调用哪个操作创建者。动作创建者就变成了返回对象的函数。没有副作用。
我再次强调,这个“获取”是基于这样一个事实,即大多数情况下,组件都需要处理错误消息。那么,为什么不调用api并处理那里的错误呢?一切顺利,打电话给行动创作者。事情变糟了,显示出一个错误。另外,我不认为整个应用程序都会重复API调用。毕竟,React试图执行模块化和自上而下的数据流。两个不同的组件实际上不应该调用相同的api。不过,他们可以调用相同的动作创建者,这很好。考虑一下注册并注册。不同的api端点。相同的最终状态(authenticated: true)
不管怎样,这是我对它的看法。如果组件内部的API调用是个好主意,我希望有更多经验的人会回答。谢谢。
编辑:刚刚在媒体上创建了这个帖子,希望这能更好地解释我的论点
发布于 2016-05-06 14:06:15
有点太开放了,想不出一个“解决方案”,但这里有一个简短的答案。
首先,在componentWillMount上更容易清理是什么意思?很多时候,api调用都是在已经挂载的组件上完成的,比如注册或登录组件。API调用发生在单击按钮时,而不是在其挂载时。
另外,API调用在外部reason组件(假设您有像redux这样的数据处理框架)之外执行的主要原因是库被用作视图层。组件呈现声明性反映应用程序状态的HTML。当登录API调用无法进行身份验证时,应用程序状态将发生更改,结果是View。如果您开始在组件中处理API响应,您可能会遇到不同步状态的问题。
例如,用户使用错误的凭据登录10次,并被“锁定”。你如何处理这个错误?您可能会添加一些逻辑来处理这些错误。如果应用程序的其他部分需要对这个错误做出反应呢?现在,您开始根据这些错误触发操作,并从本质上回到完全从操作创建者发出API调用,而操作创建者恰好存在于组件中。
现在,这主要适用于大型应用程序。如果应用程序足够小,并且像redux这样的状态管理框架只是添加膨胀,那么在组件中处理API调用是完全合理的。但是,如果它是一个大型应用程序,我仍然强烈建议将API逻辑保留在动作创建者中。
https://stackoverflow.com/questions/37066494
复制相似问题