Example 1: Updating an object with setState in React
this.setState(prevState => {
let jasper = Object.assign({}, prevState.jasper); // creating copy of state variable jasper
jasper.name = 'someothername'; // update the name property, assign a new value
return { jasper }; // return new object jasper object
})
//2ND METHOD
this.setState(prevState => ({
jasper: { // object that we want to update
...prevState.jasper, // keep all other key-value pairs
name: 'something' // update the value of specific key
}
}))
Example 2: How to add object in an array using useState
import React, { useState } from 'react';
function App() {
const [items, setItems] = useState([]);
// handle click event of the button to add item
const addMoreItem = () => {
setItems(prevItems => [...prevItems, {
id: prevItems.length,
value: getRandomNumber()
}]);
}
// generate 6 digit random number
const getRandomNumber = () => {
return Math.random().toString().substring(2, 8);
}
return (
useState with an array in React Hooks - Clue Mediator
const initialState = [
{ name: "foo", counter: 0 },
{ name: "far", counter: 0 },
{ name: "faz", counter: 0 }
];
const [state, setState] = useState(initialState);
const clickButton = () => {
// 1. Make a shallow copy of the array
let temp_state = [...state];
// 2. Make a shallow copy of the element you want to mutate
let temp_element = { ...temp_state[0] };
// 3. Update the property you're interested in
temp_element.counter = temp_element.counter+1;
// 4. Put it back into our array. N.B. we *are* mutating the array here, but that's why we made a copy first
temp_state[0] = temp_element;
// 5. Set the state to our new copy
setState( temp_state );
}
Example 5: add object to array setstate
To push to the beginning of the array do it this way
this.setState( prevState => ({
userFavorites: [{id: 3, title: 'C'}, ...prevState.userFavourites]
}));