Estoy obteniendo datos de la tienda redux con useSelector .
const customerProduct = useSelector((state) => state.objects.customersProducts[match.params.customerProductId]);Si registro los datos, se muestra así en la consola:
Una vez que trato de usar el operador de propagación para crear un nuevo objeto, perdería todos los valores con (...) .
Como esto:
const updatedCustomerProduct = { ...customerProduct, newValue: "abc" };Obtendría una salida como esta:
const uptdatedCustomerProduct = { "id": "AALzgGxtlg", "_objCount": 6360, "newValue": "abc", "className": "customerOfferMetadata" }¿Que está pasando aqui? ¿Cómo podría manejar estos valores? Si copio el objeto desde la consola, el objeto es perfectamente visible.
Incluso en las herramientas de desarrollo de redux, los datos se muestran así:
{ "entityInfo": { "productId": 441, "bundleOfferId": 22 }, "title": { "us": "Special Offer" }, "desc": { "us": "6 months" }, "order": 0, "enabled": true, "entityType": "product", "detailsUrl": "www.google.com", "thumb": { "__type": "Pointer", "className": "Resource", "objectId": "12345" }, "createdAt": "2021-02-26T18:48:25.358Z", "updatedAt": "2021-09-21T21:41:49.384Z", "clientId": 1, "objectId": "AALzgGxtlg" }No estoy seguro de qué código está generando esos objetos para usted, pero cuando ve propiedades en la consola que son semitransparentes, no son enumerables . Esto significa que al aplicar el operador de propagación, no se repiten y, por lo tanto, no se convierten en el nuevo objeto.
Para hacer que todas las propiedades sean enumerables, consulte la pregunta Hacer que todas las propiedades sean enumerables .