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

时间:2016-02-25 11:18:59

标签: javascript redux react-redux

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

问题:我应该

  1. 在数据到达之前转换数据,然后再使用转换后的数据调度成功操作?

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

  3. 使用原始数据调度成功操作并将其转换为reducer?

  4. 1。中,数据将在我需要时进行转换,在我看来,它将API数据格式与我的Redux存储区分开。但转换逻辑在数据提取操作中。

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

    3。中,异步操作创建器保持简单,根本没有逻辑,但操作与API数据格式相关联。

    我要去 1。(并且无论如何都要对变换进行单元测试),但我并不完全开心。有什么建议吗?谢谢!

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

1 个答案:

答案 0 :(得分:2)

选项1是正确的答案。

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