与 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);
})

如果你这样做,我看不出有任何副作用。