У меня есть приложение типа ресторана, которое я создаю.Я использую избыточность для обработки состояния.У меня есть значок в верхнем углу, который отслеживает количество товаров в корзине.Это работало и обновлялось должным образом, когда состояние содержало массив.С тех пор я изменил состояние на Карту только по своим личным причинам, и все работает, КРОМЕ номера больше не обновляется.Я вижу, что редуктор все еще выполняет свою работу, но число не обновляется, как раньше.Я пытался найти ошибку и до сих пор не могу найти, где она идет не так.
Мой редуктор:
import { MenuAction } from "../components/Utils";
const CartItems = (state : Map<Item, number> = new Map(), action: MenuAction) : Map<Item, number> => {
console.warn(state);
switch (action.type) {
case 'ADD_TO_CART':
if (state.has(action.payload)) {
return state.set(action.payload, state.get(action.payload) + 1);
} else {
return state.set(action.payload, 1);
}
case 'REMOVE_FROM_CART':
if (state.has(action.payload)) {
if (state.get(action.payload) == 1) {
state.delete(action.payload);
return state;
} else {
return state.set(action.payload, state.get(action.payload) - 1);
}
}
}
return state
}
export default CartItems
The component with the icon that displays the number:
const ShoppingCartIcon = (props: any) => (
<View style={[{ padding: 5 }, Platform.OS == 'android' ? styles.iconContainer : null]}>
<View>
<Text style={{color: 'white', fontWeight: 'bold'}}>
{Utils.getCartTotal(props.cartItems)}
</Text>
</View>
<Icon onPress={() => props.navigation.navigate('Cart')} name="ios-cart" size={30} />
</View>
)
const mapStateToProps = (state: Map<Item, number>) => {
return {
cartItems: state
}
}
export default connect(mapStateToProps)(withNavigation(ShoppingCartIcon));