在异步操作创建器中,我从服务器获取数据。对于我的用例,数据的格式不是很好,我需要对其进行转换以在 UI 中使用它。
问题:我应该
在使用转换后的数据发送成功操作之前转换数据?
fetch("some/url") .then(res => dispatch(successActionCreator(transform(res)))
使用原始数据发送成功操作并将其存储为,并在内部进行转换
mapStateToProps
?使用原始数据发送成功操作并在 reducer 中进行转换?
在1.中,数据会在我需要的时候进行转换,在我看来它解耦了 API 数据格式和我的 Redux 存储。但是转换逻辑在数据获取操作中。
在2.中,异步操作创建者保持简单,完全没有逻辑,映射发生在 UI 层。但这意味着我需要使用 reselect 之类的东西来优化它,因为mapStateToProps
每次渲染都会调用它。
在3.中,异步操作创建者保持简单,完全没有逻辑,但操作与 API 数据格式耦合。
我会选择1。(无论如何都要对转换进行单元测试),但我并不完全满意。有什么建议吗?谢谢 !
- 编辑:由于这个问题是一个自以为是的答案,我有点在这里回答我自己。由于评论中所述的所有原因和答案之一,我将选择1. 。