我的动作取一个网址并得到一个json。
我需要将这个json转换为一个对象数组并设置为状态。
我问你:哪里必须放置业务逻辑来将json转换为对象数组?
必须放置
或
答案 0 :(得分:7)
操作是将数据从应用程序发送到商店的信息的有效负载。
行动描述了事情发生的事实,但没有指明 应用程序状态如何响应变化。这是工作 减速器。
所以我会选择#2选项:将它放入reducer代码中,它将接收原始数据'作为有效载荷中的json,然后转换为一个对象数组并进入状态。
答案 1 :(得分:0)
这是一个古老的问题,但我想分享我的想法。您的情况在redux文档中称为异步操作。而同时:
操作是信息的有效负载,这些信息将数据从应用程序发送到商店。
动作描述了某些事情发生的事实,但是没有指定应用程序的状态如何响应而改变。这是减速器的工作。
异步操作稍微复杂一些,如高级教程Redux Async Actions下的redux文档所示:
export const RECEIVE_POSTS = 'RECEIVE_POSTS'
function receivePosts(subreddit, json) {
return {
type: RECEIVE_POSTS,
subreddit,
posts: json.data.children.map(child => child.data),
receivedAt: Date.now()
}
}
他们建议您在将异步响应发送到reducer之前先对其进行解析。所以我认为选项1是正确的。
希望这会有所帮助!