Я использую reactjs с redux, и в пользовательском интерфейсе я показываю категории вместе с продуктами, с ними связанными.
Когда пользователь перемещает продукт в другую категорию, мне не нужно перезагружать весь файл JSON, как я делаю сейчас, потому что JSON на самом деле довольно большой.
Как я могу изменить этот файл JSON, просто удалив productId из коллекции catProducts одной категории и добавив productId в коллекцию catProducts других категорий.
{
"shop" : {
"categories": [
{
id: 1,
name: "category1",
"catProducts" : [
{
productId: 123
}
]
},
{
id: 2,
name: "category2",
"catProducts" : [
{
productId: 456
}
]
},
{
id: 3,
name: "category3",
"catProducts" : [
{
productId: 789
}
]
}
]
}
}
Ниже приведены мои действия и редукторы, как вы можете видеть, я перезагружаю всю категорию продуктами каждый раз, когда продукт перемещается. Все, что мне нужно сделать, это после вызова API изменить мое состояние, удалив 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 };