То, что вы делаете, близко, но вы должны помнить, что когда вы используете такой разбрасыватель, вы получите следующее:
{
description: "descriptionString",
vatInfo : {
vatAccount: {
vatCode : "vatCode"
}
},
product: {
description: "descriptionString",
vatInfo : {
vatAccount: {
vatCode : "vatCode"
}
}
}
}
То, что я думаю, выДля product
нужно перезаписать значения, но не получить свойство product в вашем объекте на основе того, что вы объяснили, что хотели.Попробуйте это:
export function changeProductOnLine(originalLine, product, customer, invoice) {
if (product) {
return {
...originalLine,
// since these are the last thing in the new obj it will overwrite anything in the obj
description: buildLineDescription(product.name, product.description),
vatInfo: {
vatAccount : {
vatCode: getProductVatCode(line, invoice)
}
}
}
} else {
return line
}
}
Таким образом, вы также не заканчиваете тем, что создаете новую переменную в памяти только для того, чтобы немного ее изменить, а затем вернуть.Все происходит сразу, и ТОЛЬКО если у вас есть значение arg 'product', отличное от undefined
или null