I'm trying to create a Copy of my existing Object by doing this. Somehow I'm constantly creating a copy by reference and not as a new object.
const fieldSchema = [
{
addressType: '',
addressSuffix: '',
addressStreet: '',
addressPostalcode: '',
addressLocation: '',
addressCountry: 'Germany',
},
];
//State
const [inputFields, setInputFields] = useState(fieldSchema);
const handleMenuItemCopy = (event, index) => {
const fields = [...inputFields];
console.log('Existing Item(s):', inputFields);
const duplicatedField = fields.splice(index, 1);
console.log('Copied Item:', duplicatedField);
const newFields = [...inputFields, ...duplicatedField];
console.log(newFields);
setInputFields(newFields);
};
return (
<>
{inputFields.map((inputField, index) => (
...
<TextField
id={`addressPostalcode-${index}`}
name="addressPostalcode"
variant="outlined"
label="Postleitzahl"
className={classes.input}
onChange={(event) => handleInputChange(event, index)}
value={inputField.addressPostalcode}
></TextField>
...
}
<Button
classes={{
root: classes.buttonBase,
startIcon: classes.buttonStartIcon,
}}
variant="outlined"
onClick={(event) => handleMenuItemCopy(event, index)}
>
Duplicate Fields
</Button>
</>
)
Live Example
- Input some Data inside any Input
- Click Button on Top right
- Select Duplizieren (Duplicate)
- Edit one Field of the Copy
- Changes Immediately take also action in the First Object Field Set.