应用 API 响应转换的最佳位置
Best place to apply API response transformation
在异步操作创建器中,我从服务器获取数据。对于我的用例,数据的格式不是很好,我需要转换它才能在 UI 中使用它。
问题 : 我应该
- 在数据到达后立即转换
数据,然后再使用转换后的数据调度成功操作?
fetch("some/url") .then(res => dispatch(successActionCreator(transform(res)))
使用原始数据调度成功操作并将其存储为,并将其转换为
mapStateToProps
?使用原始数据调度成功操作并将其转换为化简器?
在 1.中,数据将在我需要时进行转换,在我看来,它将 API 数据格式和我的 Redux 存储分离。但转换逻辑在数据获取操作中。
在 2.中,异步操作创建者保持简单,完全没有逻辑,映射发生在 UI 层。但这意味着我需要通过重新选择之类的东西来优化它,因为每次渲染都会调用mapStateToProps
。
在 3.中,异步操作创建者保持简单,根本没有逻辑,但操作与 API 数据格式耦合。
我要去 1.(无论如何都要对转换进行单元测试),但我并不完全满意。有什么建议吗?谢谢!
-- 编辑 :由于这个问题有一个固执己见的答案,我在这里有点回答我自己。我会选择1.,出于评论和答案之一中所述的所有原因。
选项 1 是正确的答案。
如果传递原始服务器响应,则会将客户端耦合到服务器端实现。隔离这些类型的转换对于应用程序的未来可维护性非常重要。
相关文章:
- Three.js:将三维位置转换为二维屏幕位置
- 其中是在ReactJS中放置一个值的最佳位置,该值由传入的初始参数计算一次,然后再也不会更改
- 将显示为 XML 格式的 Google 地图位置转换为输出 (ASP.Net、C#)
- 应用 API 响应转换的最佳位置
- Javascript:注册事件处理程序的最佳位置
- 如何将矢量(X,Y)位置转换为纬度/经度坐标?Javascript
- 将角度文件存储在轨道中的最佳位置
- 存储angularJs中解析方法的最佳位置
- 获取CSS位置转换,以不对窗口缩放做出反应
- 在Zend Framework中,哪里是放置自定义jquery和javascript的最佳位置
- 在HTML文档中插入JavaScript的最佳位置
- 什么是存储和组织NOSQL数据库图像的最佳位置
- 事件回调的最佳位置在哪里?(匿名或命名)
- 将javascript行为附加到DOM的最佳位置
- JavaScript将鼠标位置转换为选择范围
- 绝对位置转换
- 在Angular/Django SPA中存放ng模板的最佳位置是什么?
- 什么是放置<脚本的最佳位置?标记在JSP文件中
- 在文档中放置JavaScript/Ajax的最佳位置是什么?
- 将地图视窗点击位置转换为地图坐标(Bing地图)