我有一个应用程序,可以在其中下载文件列表,因此我发送了一个操作(使用 axios):
export function getFileList(foo, bar) {
return {
type: GET_FILE_LIST,
payload: {
request: {
url: myApiUrl
}
}
}
}
我得到这样的回报:
{
"output":
[
{"file":"file15166.jpg","id":1234},
{"file":"file231321.jpg","id":6432}
(...)
],
"foo": "bar",
"etc": "etc"
}
获得数据后,我将其推送到商店:
case GET_FILE_LIST:
return Object.assign({}, state, {
files: action.payload.data.output
})
现在,我的问题是 - 如果我只需要将这些文件的 ID 推送到我的 redux 商店怎么办?
我的意思是除了state.myReducer.files
我需要之外state.myReducer.fileIds: [1234, 6432]
。我怎样才能得到响应,改变它然后推送到减速器?
我正在考虑在响应上运行一个循环,但这样做可能会导致副作用,并且这些在减速器中是被禁止的,对吗?这里的正确方法是什么?当然不包括修改 API 的后端。
我知道做这些事情的最佳地点是在行动中,但我还没有回应:/有什么想法吗?
case GET_FILE_LIST:
return Object.assign({}, state, {
files: action.payload.data.output
fileIds: action.payload.data.output.map(item=> item.id);
})
如果你这样做,我看不出有任何副作用的理由。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句