Обновление данных для рендринга
This commit is contained in:
+50
-1
@@ -1,6 +1,55 @@
|
|||||||
// удаляем все, оставляя лишь пустую функцию App ниже
|
import { useState } from 'react'
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
|
const [tasks,setTasks] = useState([]);
|
||||||
|
|
||||||
|
//Неправильный вариант решения
|
||||||
|
const toggleTask = taskId => {
|
||||||
|
const task = tasks.find(t => t.id === taskId);
|
||||||
|
task.complite = !task.complite; // Мутация
|
||||||
|
setTasks(tasks)
|
||||||
|
}
|
||||||
|
//Правильный вариант решения
|
||||||
|
const toggleTask = taskId => {
|
||||||
|
setTasks(tasks.map(task =>
|
||||||
|
task.id === taskId ? {...task, complite: !task.complite} : task
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
const [user, setUser] = useState({
|
||||||
|
name:'Иван',
|
||||||
|
email:'ivan@example.com',
|
||||||
|
age: 22,
|
||||||
|
address: {
|
||||||
|
city: 'Syktyvkar',
|
||||||
|
street: 'Babushkina',
|
||||||
|
house: 19,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const updateName = newName => {
|
||||||
|
setUser({
|
||||||
|
...user,
|
||||||
|
name: newName,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const updateProfile = updates => {
|
||||||
|
setUser({
|
||||||
|
...user,
|
||||||
|
...updates,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const updateCity = newCity => {
|
||||||
|
setUser(
|
||||||
|
...user,
|
||||||
|
address: {
|
||||||
|
...user.address,
|
||||||
|
city: newCity
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{/* Добавьте тестовый контент для проверки */}
|
{/* Добавьте тестовый контент для проверки */}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
.container {
|
||||||
|
/* display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: nowrap;*/
|
||||||
|
height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
font-size: 16pt;
|
||||||
|
border: 1px dotted gray;
|
||||||
|
/*margin: 5px 10px;
|
||||||
|
padding: 10px;*/
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user