Хорошо, вот мои кнопки, где я добавляю и удаляю из корзины в ProductScreen :
<TouchableOpacity onPress={()=>{this.addToCart()}}>
<Text>add to cart</Text>
</TouchableOpacity>
<TouchableOpacity onPress={()=>{this.props.updateCart({'numberOfProducts':0,'products':[]})}}>
<Text>Erase cart</Text>
<TouchableOpacity>
Функция addToCart :
addToCart = () =>{
let currentCartProducts = this.props.cart;
currentCartProducts.numberOfProducts++;
this.setState({
currentProductToAdd:Object.assign(
this.state.currentProductToAdd,
{
'toalPriceOfProductWithExtras': this.props.navigation.getParam('price') * this.state.value,
'piecesOfProduct': this.state.value,
}
)
})
currentCartProducts.products.push(this.state.currentProductToAdd);
this.props.updateCart(currentCartProducts);
}
CartReducer
const INITIAL_STATE = {'numberOfProducts':0,'products':[]};
export default (state = INITIAL_STATE, action) => {
switch(action.type) {
case 'update':
return action.payload;
default:
return state;
}
};
CartAction
export const updateCart = (val) => {
return{
type: 'update',
payload: val
};
};
И компонент CartScreenWillReceiveProps , где я хочу отобразить продукты, которые находятся в корзине. Редукс работает хорошо, и у меня все данные хранятся правильно, но они не отображаются!
componentWillReceiveProps(nextProps) {
console.log('I m in componentWillReceiveProps')
if (this.props.cart !== nextProps.cart) {
console.log('OLD CART')
console.log(this.props.cart)
console.log('NEW CART')
console.log(nextProps.cart)
}
}
Когда я нажимаю добавить, это не работает, но когда я нажимаю удалить, это работает!
После одного добавления и одного удаления:
I m in componentWillReceiveProps
OLD CART
Object {
"numberOfProducts": 1,
"products": Array [
Object {
"extras": undefined,
"piecesOfProduct": 1,
"productName": "Chips",
"productPrice": 0,
"restaurantAddres": "Tay House 300 Bath St",
"restaurantName": "time2dine - Spaces",
"toalPriceOfProductWithExtras": 0,
},
],
}
NEW CART
Object {
"numberOfProducts": 0,
"products": Array [],
}
После другого удаления нажмите:
I m in componentWillReceiveProps
OLD CART
Object {
"numberOfProducts": 0,
"products": Array [],
}
NEW CART
Object {
"numberOfProducts": 0,
"products": Array [],
}
Это странно потому что при втором нажатии на кнопку удаления корзины те же реквизиты ... но когда я добавляю и изменение реквизита ничего не показывает.
Спасибо!