12. update OBJECTS in state
src/App.jsx
import MyComponent_12 from "./12/MyComponent"
export default function App() {
return (
<>
<MyComponent_12/>
</>
)
}
src/MyComponent.jsx
import { useState } from "react";
export default function MyComponent_12(){
const [car, setCar] = useState({
year:2024,
make: "Ford",
model: "Mustang"
});
function handleYearChange(event){
setCar(car => ({...car, year:event.target.value}));
}
function handleMakeChange(event){
setCar(c => ({...c, make:event.target.value}));
}
function handleModelChange(event){
setCar(c => ({...c, model:event.target.value}));
}
return(
<div>
<p>
Your favorite car is : {car.year} {car.make} {car.model}
</p>
<input type="number" value={car.year} onChange={handleYearChange} /><br/>
<input type="text" value={car.make} onChange={handleMakeChange} /><br/>
<input type="text" value={car.model} onChange={handleModelChange}/><br/>
</div>
);
}
13. update ARRAYS in state
src/App.jsx
import MyComponent_13 from "./13/MyComponent"
export default function App() {
return (
<>
<MyComponent_13 />
</>
)
}
src/13/MyComponent.jsx
import { useState } from "react";
export default function MyComponent_13(){
const [foods,setFoods] = useState(["Apple","Orange","Banana"]);
function handleAddFood(){
const newFood = document.getElementById("foodInput").value;
document.getElementById("foodInput").value = "";
setFoods(f => [...f, newFood]);
console.log(foods)
}
function handleRemoveFood(index){
setFoods(foods.filter((_,i) => i !== index))
}
return(
<div>
<h2>List of Food</h2>
<ul>
{foods.map((food,index) =>
<li key={index} onClick={()=>handleRemoveFood(index)}>
{food}
</li>
)}
</ul>
<input type="text" id="foodInput" placeholder="Enter food name" />
<button onClick={handleAddFood}>Add Food</button>
</div>
);
}
14. update ARRAY of OBJECTS in state
import { useState } from "react";
export default function MyComponent_14(){
const [cars,setCars] = useState([]);
const [carYear,setCarYear] = useState(new Date().getFullYear());
const [carMake,setCarMake] = useState("");
const [carModel,setCarModel] = useState("");
function handleAddCar(){
const newCar = {
year:carYear,
make:carMake,
model:carModel,
};
setCars(c => [...c, newCar]);
setCarYear(new Date().getFullYear());
setCarMake("");
setCarModel("");
}
function handleRemoveCar(index){
setCars(c => c.filter((_,i) => i !== index));
}
function handleYearChange(event){
setCarYear(event.target.value);
}
function handleMakeChange(event){
setCarMake(event.target.value);
}
function handleModelChange(event){
setCarModel(event.target.value);
}
return(
<div>
<h2>List of Car Objects</h2>
<ul>
{cars.map((car,index) =>
<li key={index} onClick={()=>handleRemoveCar(index)}>
{car.year} {car.make} {car.model}
</li>
)}
</ul>
<input type="number" value={carYear} onChange={handleYearChange} /><br/>
<input type="text" value={carMake} onChange={handleMakeChange} placeholder="Enter car make" /><br/>
<input type="text" value={carModel} onChange={handleModelChange} placeholder="Enter car model" /><br/>
<button onClick={handleAddCar}>Add Car</button>
</div>
);
}