@DonorOfLove

Почему не сетается отдельное свойство стейта?

*код немного упрощен для читаемости*

есть стейт:
[user,setUser]=React.useState({
        name: 'noName',
        pull: [{},{},{}],
    })

есть компонент:
<Hero addToCamp={() => addToCamp()/>)
который при клике вызывает функцию которая должна сетать только pull:
const addToCamp = () => {
            let newHeroes= ...
            setUser({pull: newHeroes}) // Что тут не так?..
        }
    }

Вопрос: я тупой или сани не едут? Объясните недалекому - почему так, почему при сете newHeroes затирает весь стейт. Я посмотрел несколько ресурсов, везде описан только такой метод сета отдельного свойства, да, можно было бы создать копию юзера, затем заменить в нем нужное свойство и эту копию уже засетать, но по мне так это не совсем валидно. Буду рад вашей помощи :3
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
В классовых компонентах this.setState поверхностно подмерживал переданное значение в стейт. В хуке - просто заменяет, и мержить надо вручную, например через спреды. Так мир устроен. В классе стейт только один, а useState может быть несколько. Например, здесь можно было бы сделать useState для name и useState для pull
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы