Question: Here is the DataForm code import React, { useState } from 'react'; const DataForm = ( { items, addNewItem, updateItem, deleteItem } ) = >

Here is the DataForm code
import React, { useState } from 'react';
const DataForm =({ items, addNewItem, updateItem, deleteItem })=>{
const [name, setName]= useState('');
const [brand, setBrand]= useState('');
const [price, setPrice]= useState('');
const [image, setImage]= useState(null);
const [error, setError]= useState(null);
const [success, setSuccess]= useState(false);
const [editingItemId, setEditingItemId]= useState(null);
const handleImageChange =(e)=>{
const file = e.target.files[0];
if (file){
setImage(file); // Save the selected file in state
}
};
const handleEdit =(item)=>{
setEditingItemId(item.id);
setName(item.name);
setBrand(item.brand);
setPrice(item.price);
setImage(null);
setError(null);
setSuccess(false);
};
const handleSubmit = async (e)=>{
e.preventDefault();
if (!name ||!brand ||!price ||(!editingItemId && !image)){
setError('All fields are required, including an image for new items.');
setSuccess(false);
return;
}
const priceNumber = parseFloat(price);
if (isNaN(priceNumber)){
setError('Price must be a valid number.');
setSuccess(false);
return;
}
const formData = new FormData();
formData.append('name', name);
formData.append('brand', brand);
formData.append('price', priceNumber);
if (image) formData.append('gear', image);
setError(null);
try {
if (editingItemId){
// Update existing item
const response = await fetch(`My URL/${editingItemId}`,{
method: 'PUT',
body: formData,
});
const data = await response.json();
if (data.success){
updateItem(data.updatedItem);
setSuccess(true);
resetForm();
} else {
setError(data.message || 'Failed to update the item.');
setSuccess(false);
}
} else {
// Add new item
const response = await fetch('My URL', {
method: 'POST',
body: formData,
});
const data = await response.json();
if (data.success){
addNewItem(data.newItem);
setSuccess(true);
resetForm();
} else {
setError(data.message || 'Failed to add the item.');
setSuccess(false);
}
}
} catch (err){
setError('An error occurred while submitting the form.');
setSuccess(false);
}
};
const handleDelete = async (itemId)=>{
try {
const response = await fetch(`My URL/${itemId}`,{ method: 'DELETE' });
const data = await response.json();
if (data.success){
deleteItem(itemId);
setSuccess(true);
} else {
setError(data.message || 'Failed to delete the item.');
setSuccess(false);
}
} catch (err){
setError('An error occurred while deleting the item.');
setSuccess(false);
}
};
const resetForm =()=>{
setEditingItemId(null);
setName('');
setBrand('');
setPrice('');
setImage(null);
document.getElementById('fileInput').value ='';
};
return (

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!