javascript - 让 Redux Reducer 合并数组
问题描述
所以这里发生的是我正在尝试设置自动分页。我设置了一个 while 循环,当返回的数据中的数组项数大于 0 时发送 get 请求。每个循环将数据发送到我的减速器 AppendUserHistoryReducer,如下面的代码所示。
我想要发生的是,reducer 将它收到的每个数据循环附加到一个数组中。就目前而言,我只知道如何将每个数据循环存储在一个单独的数组中(如控制台图片所示)。我可以映射数据并在事后将它们合并在一起,但我只是想知道是否有更好的方法来做到这一点,所以不需要编写额外的代码。意思是,可以在reducer中完成吗?
为了清楚起见,我的目标是让 totalUserHistory 状态为 [0 - 729],而不是分解成不同的数组,只需修改 reducer 中的代码即可。
我正在寻求帮助的代码:
export const AppendUserHistoryReducer = (userData=[], action) => {
if (action.type === 'APPEND_USER_DATA') {
return [...userData.concat(action.payload)]
}
return userData;
}
While 循环代码,仅用于上下文:
// auto pagination
while (this.props.userHistory.length > 0) {
let { userHistory } = this.props
let lastPage = userHistory[userHistory.length-1].data.name
const response = await axios.get (`https://oauth.reddit.com/user/${userIdentityObject.data.name}/saved/.json?limit=100&after=${lastPage}`, {
headers: { 'Authorization': `bearer ${token}` }
})
console.log('a loop');
this.props.storeUserHistory(response.data.data.children)
this.props.appendUserHistory(response.data.data.children)
}
}
在控制台中生成多个数组:
解决方案
根据屏幕截图,您有一个包含所有项目的数组。它只是 chrome 开发工具在视觉上分离了数组以方便调试。
为了确保只有一个数组,可以将其字符串化,然后打印到控制台:
console.log(JSON.stringify(totalUserHistory))
推荐阅读
- python - 在 pandas 上选择一列(来自时间戳的 datetime.date 的结果)
- ios - 更改 .xcarchive 上的签名团队
- php - 如何以最简单的方式将键和值添加到数组
- python - keras - tensorflow - LSTM - csv - 如何使用 fit_generator
- asp.net - 从网站转换为 Web 应用程序后,Syste.Web.Ui.Page 为“未定义”
- python - `mp.pool` 正常工作时`mp.pool.ThreadPool` 失败
- javascript - React-Router V2, V4 - 如何在 react-router V4 中使用 react-router V2 的“路由器”?
- typescript - 量角器 + 茉莉花 + TS。打字问题:xit 返回无效。如何使用 xit().pend(原因)
- vba - 选择现有形状时出现错误 86db089e
- java - 如何在java中获取表情符号代码?