【发布时间】:2019-09-25 15:17:35
【问题描述】:
在获取和基于响应更新我在 Redux 中的状态中的数组时遇到了一个小问题。
首先,我在操作中使用 forEach 完成了整个数组更新(基于我的初始状态对象)并将其发送到 reducer,它工作正常。简单的。
然后阅读教程,修改应该只在 reducer 中完成,并且该操作应该只处理获取响应。所以我尝试过这种方式,两种方式,都失败了。
在这两种情况下,我发送给 reducer 的有效负载只是我得到的就绪响应。
有人可以告诉我哪里出了问题以及在减速器中执行此操作的正确方法是什么?
这两种方法都不起作用:
export const handleMusicCards = (state = musicState, action = {}) => { 开关 (action.type) {
case REQUEST_MUSIC_SUCCESS:
return Object.assign({}, state, {
musicStateItemList: state.musicStateItemList
.forEach((el, i) => {
el.track = action.payload.message.body.track_list[i].track.track_name;
el.album = action.payload.body.track_list[i].track.album_name;
el.artist = action.payload.body.track_list[i].track.artist_name;
el.id = action.payload.body.track_list[i].track.track_id;
el.favClicked = false;
el.addedToFav = false;
}),
isLoading: false
});
} }
export const handleMusicCards = (state = musicState, action = {}) => { 开关 (action.type) {
case REQUEST_MUSIC_SUCCESS:
return Object.assign({}, state, {
musicStateItemList: state.musicStateItemList
.forEach((el, i) => {
return {
...el,
track: action.payload.message.body.track_list[i].track.track_name,
album: action.payload.message.body.track_list[i].track.album_name,
artist: action.payload.message.body.track_list[i].track.artist_name,
id: action.payload.message.body.track_list[i].track.track_id,
favClicked: false,
addedToFav: false,
}
}),
isLoading: false
});
} }
【问题讨论】:
-
Array.prototype.forEach不会向调用者返回任何内容,您确定您不是要使用Array.prototype.map来代替吗? -
是的,抱歉,在第二个示例中应该是地图。仍然无法正常工作,这次出现错误“无法读取未定义的属性 'body'”,这很奇怪。