【问题标题】:Best place to apply API response transformation [closed]应用 API 响应转换的最佳位置 [关闭]
【发布时间】:2016-02-25 11:18:58
【问题描述】:

在异步操作创建器中,我从服务器获取数据。对于我的用例,数据的格式不是很好,我需要对其进行转换以在 UI 中使用它。

问题:我应该

  1. 在数据到达之前转换数据,然后用转换后的数据发送成功操作?

    fetch("some/url")
    .then(res => dispatch(successActionCreator(transform(res)))
    
  2. 使用原始数据发送成功操作并将其存储为,并在mapStateToProps 中进行转换?

  3. 使用原始数据发送成功操作并在 reducer 中进行转换?

1.中,数据会在我需要的时候进行转换,在我看来它解耦了API数据格式和我的Redux store。但转换逻辑在数据获取动作中。

2. 中,异步操作创建者保持简单,完全没有逻辑,映射发生在 UI 层。但这意味着我需要通过重新选择之类的方法对其进行优化,因为每次渲染都会调用mapStateToProps

3. 中,异步操作创建者保持简单,完全没有逻辑,但操作与 API 数据格式耦合。

我会选择 1.(无论如何都要对转换进行单元测试),但我并不完全满意。有什么建议吗?谢谢!

-- 编辑:由于这个问题有一个固执的答案,所以我在这里回答我自己。我会选择 1.,出于 cmets 中所述的所有原因和答案之一。

【问题讨论】:

  • 这取决于一个固执己见的答案 :) 但我也会选择 1。选项 2 不好,因为您在商店和视图层中都添加了状态逻辑,而选项 3 增加了复杂性reducer 函数,从长远来看是你不想要的
  • 确实固执己见 :) 毕竟我选择了 1.

标签: javascript redux react-redux


【解决方案1】:

选项 1 是正确答案。

如果您传递原始服务器响应,则您将客户端耦合到服务器端实现。隔离这些类型的转换对于应用程序未来的可维护性很重要。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2018-04-05
    • 2018-05-08
    • 2012-06-24
    • 2013-01-25
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多