Reactjs Redux reducer-使用forEach修改数组
在Redux中获取和基于响应更新我的状态内的数组时有一个小问题 首先,我用forEach在actions中完成了整个数组更新(基于我的初始状态对象),并将其发送到reducer,它成功了。简单 但是,请阅读教程,修改应该只在reducer中进行,并且该操作应该只处理获得响应的问题。所以我试过这样做,两种方式,都失败了 在这两种情况下,我发送给reducer的有效负载就是我得到的现成响应 有人能告诉我哪里出了问题,正确的方法是什么吗 两种方法都不起作用: export const handleMusicCards=(state=musicState,action={})=>{ 开关(动作类型){ } } export const handleMusicCards=(state=musicState,action={})=>{ 开关(动作类型){ }Reactjs Redux reducer-使用forEach修改数组,reactjs,redux,Reactjs,Redux,在Redux中获取和基于响应更新我的状态内的数组时有一个小问题 首先,我用forEach在actions中完成了整个数组更新(基于我的初始状态对象),并将其发送到reducer,它成功了。简单 但是,请阅读教程,修改应该只在reducer中进行,并且该操作应该只处理获得响应的问题。所以我试过这样做,两种方式,都失败了 在这两种情况下,我发送给reducer的有效负载就是我得到的现成响应 有人能告诉我哪里出了问题,正确的方法是什么吗 两种方法都不起作用: export const handleMu
}读完后,我不确定故障发生在哪里。关于redux约定的更多信息 动作对象仅用于描述应该对状态进行哪些更改。减速器是实际应更改状态的位置。在redux中,您永远不想修改state对象,而是希望复制它并返回一个新的对象和更改,如action对象所述 所以你可能有一个减速箱,看起来像这样
const reducer = (state, action) => {
switch (action.type) {
case NEW_RECORD_SUBMIT :
return {
...state,
newRecordStatus: action.status,
};
default :
return state;
}
};
现在问题解决了。非常愚蠢的错误,switch语句中的大小写错误…选择了我尝试的第二个选项,使用map()
Array.prototype.forEach
不会向调用方返回任何内容,您确定您不是要使用Array.prototype.map
?是的,抱歉,在第二个示例中应该是map。仍然不起作用,这一次出现错误“无法读取未定义”的属性“body”,这很奇怪。
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
});
const reducer = (state, action) => {
switch (action.type) {
case NEW_RECORD_SUBMIT :
return {
...state,
newRecordStatus: action.status,
};
default :
return state;
}
};