我今天要问的更多的是膨胀机而不是减速机。所以我现在有数据:
[{"id":4729853,"MatItemKey":202029, "LongDesc":"2R Basket Label"},{"id":4729854,"MatItemKey":57561, "LongDesc":"Red Empty Basket Replacements"},
{"id":4729855,"MatItemKey":194135,"LongDesc":"BTS NOT REQUIRED"},{"id":4729856,"MatItemKey":210965,"LongDesc":"Heidi Heckelbeck Gets the Sniffles"},
{"id":4729857,"MatItemKey":132594,"LongDesc":"World's Longest Toenail, The"}]
但我真正想要为列表做的是通过我的api扩展它,所以调用每个id,获取更多数据并用更多细节填充每个项目。有没有使用redux来保持当前的数据结构,但是通过axios添加每个调用的任何细节来附加数据?到目前为止,我的所有调用都获得了新数据,因此reducer基本上只是从axios获取数据并将其放入商店。但我不确定添加到现有状态的模式是什么?提前致谢。
答案 0 :(得分:1)
您可以将状态列表传递给具有axios调用的方法。在axios成功回调中,您可以映射列表并附加要从API添加的任何数据。使用Array.prototype.map将创建一个新数组。然后将新数组作为有效负载传递给reducer。
答案 1 :(得分:0)
我找到了办法。它在我的动作创建者身上没有任何用处。我只是为我的axios调用传递单个数据,用于单个项目。然后在我的reducer中,我有以下代码来更新我的状态:
case UPDATE_BOOK:
let newVals = state.map((item)=>{
if(item.MatItemKey === action.meta.book.MatItemKey){
return update(item, {$merge: action.payload.data})
}else{
return item
}
});
console.log(newVals);
return newVals
因此,通过immutability-helper,我能够使用axios调用状态来更新我的数据。感谢大家的建议,他们都帮了忙。