изменчивость с вложенными объектами с es6 и redux - PullRequest
0 голосов
/ 01 октября 2019

Неправильная мутация вложенного объекта, uom_id получает [null, null], и оно всегда должно иметь значение.

    case ADD_TO_CART:
        console.log('ADD TO CART', {...(JSON.parse(JSON.stringify(payload.product)))})
        const ex = state.shoppingCart[`c_${payload.product.default_code}`] ? {
            ...(JSON.parse(JSON.stringify(state.shoppingCart[`c_${payload.product.default_code}`]))),
            quantity: state.shoppingCart[`c_${payload.product.default_code}`].quantity + 1,
            uom_id: [ payload.product.uom_id[0], payload.product.uom_id[1]],
            section: payload.section
        } : {
                ...(JSON.parse(JSON.stringify(payload.product))),
                section: payload.section,
                uom_id: [ payload.product.uom_id[0], payload.product.uom_id[1]] ,
                quantity: 1
            };
            console.log('THIS IS THE EX, ', ex);
        return {
            ...state,
            shoppingCart: {
                ...state.shoppingCart,
                [`c_${payload.product.default_code}`]: state.shoppingCart[`c_${payload.product.default_code}`] ? {
                    ...(JSON.parse(JSON.stringify(state.shoppingCart[`c_${payload.product.default_code}`]))),
                    quantity: state.shoppingCart[`c_${payload.product.default_code}`].quantity + 1,
                    uom_id: [ payload.product.uom_id[0], payload.product.uom_id[1]],
                    section: payload.section
                } : {
                        ...(JSON.parse(JSON.stringify(payload.product))),
                        section: payload.section,
                        uom_id: [ payload.product.uom_id[0], payload.product.uom_id[1]],
                        quantity: 1
                    },
            }
        }

Я ожидаю, что объект будет скопирован с вложенными уровнями.

ct На изображении вы можете увидеть первый объект в качестве полезной нагрузки и после результата ex

1 Ответ

0 голосов
/ 01 октября 2019

Я думаю, что у вашего объекта полезной нагрузки есть объект продукта в объекте продукта.

Таким образом:

{ 
   payload : { 
              product : {
                          product : {

                          },
                          section: undefined
              }
   }
}

Поэтому вам придется использовать payload.product.product.uom_id[0] для получения ваших значений.

Кроме того, я рекомендую использовать деконструкцию назначений для объектов и массивов, чтобы помочь очистить структуру кода. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

Например,

const { product: { product } } = payload

, где эта product переменная будет такой же, как payload.product.product

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...