Я новичок в React и Redux.Мне удается обновить существующий элемент в массиве со следующим
case ACTION_TYPES.SET_PREPARATION_ITEM:
const { id, x, y, rotation } = action.payload;
const currentPreparationItem = state.entity.preparationItems[id];
currentPreparationItem.x = x;
currentPreparationItem.y = y;
currentPreparationItem.rotation = rotation;
return { ...state, preparationItems: { ...state.entity.preparationItems } };
Теперь я пытаюсь добавить новый элемент в массив со следующим кодом
case ACTION_TYPES.ADD_PREPARATION_ITEM:
const implant: IProductMySuffix = action.payload;
const preparationItem: IPreparationItemMySuffix = {};
preparationItem.x = 10;
preparationItem.y = 10;
preparationItem.productId = implant.id;
preparationItem.image = implant.image;
preparationItem.imageContentType = implant.imageContentType;
const result = { ...state, preparationItems: { ...state.entity.preparationItems.concat(preparationItem) } }
return result;
Если я правильно отлаживаю,result
const будет иметь массив с одним элементом.Однако в методе рендеринга он, похоже, не определяет наличие в массиве каких-либо элементов.Любая идея, что может вызвать это?
Добавлена часть моих компонентов
const mapStateToProps = (storeState: IRootState) => ({
users: storeState.userManagement.users,
customers: storeState.customer.entities,
businesses: storeState.business.entities,
products: storeState.product.entities,
preparationEntity: storeState.preparation.entity,
loading: storeState.preparation.loading,
updating: storeState.preparation.updating,
updateSuccess: storeState.preparation.updateSuccess
});
const mapDispatchToProps = {
getUsers,
getCustomers,
getBusinesses,
getEntity,
getProducts,
updateEntity,
setBlob,
createEntity,
reset,
setPreparationItem,
addPreparationItem
};