我将reactjs与redux一起使用,并且在UI上显示类别以及与它们相关联的产品。
当用户将产品移动到另一个类别时,我不想像现在这样重新加载整个JSON文件,因为JSON实际上非常大。
如何通过从一个类别的catProducts集合中移除productId并将productId添加到另一个类别的catProducts集合中来更改此JSON文件。
{
"shop" : {
"categories": [
{
id: 1,
name: "category1",
"catProducts" : [
{
productId: 123
}
]
},
{
id: 2,
name: "category2",
"catProducts" : [
{
productId: 456
}
]
},
{
id: 3,
name: "category3",
"catProducts" : [
{
productId: 789
}
]
}
]
}
}
下面是我的动作和减速机,如你所见,每次移动产品时,我都会用产品重新加载整个类别。
我需要做的只是在进行API调用之后,通过从一个catProducts中删除productId并将其添加到另一个catProducts中来改变我的状态。
我该怎么做?
行动:
moveProduct: (data) => {
return dispatch => {
var url = '....'; // api to move the product in db
axios.post(url, reqArgs)
.then(function(resp) {
dispatch(Actions.fetchCategoriesAndProducts(data.shopId));
});
};
},
减速机:
case Constants.FETCH_CATEGORIES_AND_PRODUCTS:
return {...state, fetching: false, shop: action.data };