Как можно деструктуризировать обьект состояния чтобы добвить или поменять только определенное значение при помощи хука useState()

При классовой компоненте я бы сделал так:

    this.state = {
       name: "" 
       text: ""
    }

   this.setState({
      ...state,
      text: "123",
   })

Как это сделать с использованием useState ?

const [ data, setData ] = useState({ name: "", text: "" })
setData( prev => prev.text = "123")

такой записью если и меняет то только 1 параметр.


Ответы (1 шт):

Автор решения: Ivan

Если data простой объект (без вложенных полей), то можно

const [ data, setData ] = useState({ name: "", text: "" })
setData(prev => ({ ...prev, text: "123" }))

Но в таком случае у тебя будет целиком меняться объект data. Как вариант ты можешь разбить это на два useState. Если не хочешь разбивать на или быть аккуратным, держа в голове, что после вызова setData, объект data каждый раз будет новым (новая ссылка).

→ Ссылка