与 redux 反应 - 改变响应然后推送到商店?
React with redux - alter response and then push to the store?
我有一个可以下载文件列表的应用程序,因此我发送了一个操作(使用 axios):
export function getFileList(foo, bar) {
return {
type: GET_FILE_LIST,
payload: {
request: {
url: myApiUrl
}
}
}
}
我在 return 中得到了类似的东西:
{
"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]
。我如何获取响应、更改它然后推送到 reducer?
我正在考虑 运行 一个响应循环,但这样做可能会导致副作用,而这些在 reducer 中是被禁止的,对吗?这里正确的方法是什么?当然不包括修改 API 的后端。
我知道做这些事情的最佳地点是在行动中,但我还没有得到回应:/有什么想法吗?
case GET_FILE_LIST:
return Object.assign({}, state, {
files: action.payload.data.output
fileIds: action.payload.data.output.map(item=> item.id);
})
如果你这样做,我看不出有任何副作用。
我有一个可以下载文件列表的应用程序,因此我发送了一个操作(使用 axios):
export function getFileList(foo, bar) {
return {
type: GET_FILE_LIST,
payload: {
request: {
url: myApiUrl
}
}
}
}
我在 return 中得到了类似的东西:
{
"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]
。我如何获取响应、更改它然后推送到 reducer?
我正在考虑 运行 一个响应循环,但这样做可能会导致副作用,而这些在 reducer 中是被禁止的,对吗?这里正确的方法是什么?当然不包括修改 API 的后端。
我知道做这些事情的最佳地点是在行动中,但我还没有得到回应:/有什么想法吗?
case GET_FILE_LIST:
return Object.assign({}, state, {
files: action.payload.data.output
fileIds: action.payload.data.output.map(item=> item.id);
})
如果你这样做,我看不出有任何副作用。