import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; /** * UserProfile component for displaying user information * @param {Object} props - Component props * @param {Object} props.user - User object * @param {Function} props.onEdit - Edit callback function */ const UserProfile = ({ user, onEdit }) => { const [isEditing, setIsEditing] = useState(false); const [userData, setUserData] = useState(user); const [loading, setLoading] = useState(false); useEffect(() => { setUserData(user); }, [user]); const handleSave = async () => { setLoading(true); try { await onEdit(userData); setIsEditing(false); } catch (error) { console.error('Failed to save user data:', error); } finally { setLoading(false); } }; const handleCancel = () => { setUserData(user); setIsEditing(false); }; const handleInputChange = (field, value) => { setUserData(prev => ({ ...prev, [field]: value })); }; if (loading) { return
Saving...
; } return (

{userData.name}

{!isEditing && ( )}
{isEditing ? (
{ e.preventDefault(); handleSave(); }}>
handleInputChange('name', e.target.value)} required />
handleInputChange('email', e.target.value)} required />