Задать вопрос

Как можно пофиксить этот баг с выводом массива?

Всем привет, возникла проблема, есть код, там есть хук useState, при клике я в состояние добавляю новый объект, вывожу его через console.log, но в консоле логе показывает что он добавился и все норм, а страница как будто не ререндерится, то есть остается старый вывод, а новый не добавляется, хотя в логе показывает, что массив заполнился, в чем может быть проблема?

import {useState} from "react";

function App() {

    const users = [
        {id: 1, title: 'Dima'},
        {id: 2, title: 'Oleg'},
    ]

    const [user, setUser] = useState(users)

    const addUser = (name) => {
        let copy = Object.assign(user)
        copy.push({id: 3, title: name})
        setUser(copy)
        console.log(user)
    }

    const usersList = () => {
        return user.map(user => <div>{user.title}</div>)
    }

  return (
    <div className="App">
        <button onClick={() => addUser(prompt())}>Click me!</button>
        <br/>
        {usersList()}
    </div>
  );
}

export default App;
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Dasihub
@Dasihub
Попробуй это
import {useState} from "react";

function App() {

    const users = [
        {id: 1, title: 'Dima'},
        {id: 2, title: 'Oleg'},
    ]

    const [user, setUser] = useState(users)

    const addUser = () => {
        const name =  prompt()
        setUser({...users,  id: Date.now(), title: name})
    }

    const usersList = () => {
        return user.map(user => <div>{user.title}</div>)
    }

  return (
    <div className="App">
        <button onClick={addUser}>Click me!</button>
        <br/>
        {usersList()}
    </div>
  );
}

export default App;


<button onClick={() => addUser(prompt())}>Click me!</button>


Вот здесь не надо создовать анонимную функцию и через параментр передать данные из prompt, лучше prompt написать внутри функции
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽