在获取时有一个小问题,并且基于响应在Redux中更新了我的状态内的数组。
首先,我在动作中基于forEach完成了整个数组更新(基于我的初始状态对象),并准备将其发送给reducer,它可以正常工作。简单。
但是,请阅读教程,其中修改仅应在reducer中完成,而该操作仅应处理获取响应。因此,我尝试过这种方式,但有两种方式都失败了。
在这两种情况下,我分配给减速器的有效负载只是我已经准备好的响应。
有人可以告诉我出了什么问题吗?在reducer中做这件事的正确方法是什么?
两种方法均无效:
export const handleMusicCards =(状态= musicState,操作= {})=> { 开关(action.type){
$.on('click',function(param))
} }
export const handleMusicCards =(状态= musicState,操作= {})=> { 开关(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
});
} }
答案 0 :(得分:1)
现在解决了。非常愚蠢的错误,switch语句中的大小写错误...使用了map(),我尝试了第二个选项
答案 1 :(得分:0)
我不确定在读取故障发生后的位置。有关redux约定的更多信息。
动作对象仅用于描述应对状态进行哪些更改。减速器是实际应更改状态的地方。在redux中,您永远不需要修改状态对象,而只想复制它并返回具有更改的新对象,如操作对象所述。
所以您可能有一个减速器盒,看起来像这样...
const reducer = (state, action) => {
switch (action.type) {
case NEW_RECORD_SUBMIT :
return {
...state,
newRecordStatus: action.status,
};
default :
return state;
}
};