应用 API 响应转换的最佳位置

Best place to apply API response transformation

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

中使用它

问题:我应该

  1. 在使用转换后的数据发送成功操作之前立即转换数据?

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

  3. 使用原始数据调度成功操作并在 reducer 中转换它?

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

2. 中,异步操作创建器保持简单,完全没有逻辑,映射发生在 UI 层。但这意味着我需要用重新选择之类的东西来优化它,因为每个渲染都会调用 mapStateToProps

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

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

-- 编辑:因为这个问题取决于一个自以为是的答案,我有点在这里回答我自己。由于评论中所述的所有原因和答案之一,我将选择 1.

选项 1 是正确答案。

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