Estoy tratando de actualizar una propiedad. Como si tuviera algunas propiedades, el nombre del producto, el precio, la cantidad, el proveedor y la descripción. Estoy enviando todas las cantidades actualizadas con todas las propiedades a MongoDb, en ese caso, puedo actualizar la base de datos y la interfaz de usuario sin ninguna actualización.
const handleDelivered = (id) => { const newQuantity = (quantity - 1); if (newQuantity >= 0) { const newService = {...serviceDetail, quantity: newQuantity} setServiceDetail(newService); const url = `https://intense-tor-77999.herokuapp.com/item/${id}`; fetch(url, { method: 'PUT', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(newService), }) .then(response => response.json()) .then(data => { console.log('Success:', data); }) .catch((error) => { console.error('Error:', error); }) } else{ toast(`${productName} is sold out`); } }Pero solo quiero actualizar solo una propiedad, por ejemplo, solo cantidad como
const updateQuantity = { quantity : newQuantity};Entonces, ¿cómo puedo actualizar esta propiedad sin enviar todas las propiedades de mi frontend a backend?
En primer lugar, puede declarar const [isReload, setIsReload]= useState(true);
cuando reciba una respuesta de la base de datos después de cargar una nueva cantidad, agregue esto
.then(response => response.json()) .then(data => { console.log('Success:', data); setIsReload(!isReload); });de lo que pone isReload como dependencia de useEffect, donde carga datos por id
useEffect(()=>{ fetch(url) .then(res=>res.json()) .then(data => setData(data)) },[isReload ]);intentalo