Reactjs 使用react的redux,为什么提取新数据会删除我以前状态的一部分?
我有多个请求一个接一个地发生,我用操作和减缩器处理它们,但其中一些似乎在完成时删除了我状态的元素 有人能给我解释一下为什么会这样吗 这是我的减速机:Reactjs 使用react的redux,为什么提取新数据会删除我以前状态的一部分?,reactjs,react-native,redux,react-redux,Reactjs,React Native,Redux,React Redux,我有多个请求一个接一个地发生,我用操作和减缩器处理它们,但其中一些似乎在完成时删除了我状态的元素 有人能给我解释一下为什么会这样吗 这是我的减速机: ... case FETCH_BLOG: return { ...state, blogs: action.payload.data }; case FETCH_ITEM_LIST: return { ...state.item, done: true, popular: [ ...state.popular
...
case FETCH_BLOG:
return { ...state, blogs: action.payload.data };
case FETCH_ITEM_LIST:
return { ...state.item, done: true, popular: [ ...state.popular ], nearby: [ ...state.nearby ], item: { ...state.item }, second_item: { ...state.second_item }, items: action.payload.data.item , new_item: action.payload.data.new_item, item_places: action.payload.data.item_places, stories: action.payload.data.stories };
case FETCH_ITEM_NEARBY:
return { ...state, nearby: action.payload.data.nearby, loading: false, count: action.payload.data.count, done: true };
case FETCH_ITEM_NEARBY_START:
return { ...state, loading: true };
case FETCH_ITEM_POPULAR:
return { ...state, popular: action.payload.data.popular };
...
我原以为使用…state会保留以前的状态,只向其中添加元素,但它似乎会以某种方式覆盖它
我按照这个顺序调用我的操作,我可以看到在一些操作完成后,我先前状态的一部分被删除
this.props.itemNearbyFetch();
this.props.itemPopularFetch();
this.props.itemListFetch();
this.props.blogFetch();
在
FETCH\u ITEM\u列表
操作中,您只是将项目分散到状态中,这将去除状态对象的任何属性,并替换为项目
具有的任何属性。我认为您误解了spread运算符的工作方式
你想做的是
case FETCH_ITEM_LIST:
return { ...state,
done: true,
items: action.payload.data.items,
new_item: action.payload.data.new_item,
item_places: action.payload.data.item_places,
stories: action.payload.data.stories
};
在上一个示例中,您现在可以复制以前处于状态的任何内容,如popular
和附近的,有效负载数据中的故事、项目和项目位置
做item:{…state.item}
是多余的,因为当你做{…state,…}
哦,我没有注意到我用的是…state.item,而不是简单的…state。修好了,谢谢你指出!