带有es6和redux的嵌套对象的可变性

时间:2019-10-01 18:54:38

标签: react-native ecmascript-6 redux

嵌套对象的错误突变,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 in the image you can see the first object as the payload and after the result of ex

1 个答案:

答案 0 :(得分:0)

我认为您的有效负载对象在产品对象中有一个产品对象。

因此:

{ 
   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相同