Redux Reducer-使用forEach修改数组

时间:2019-05-07 22:50:31

标签: reactjs redux

在获取时有一个小问题,并且基于响应在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
  });

} }

2 个答案:

答案 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;
  }
};