Удалить все значения из объекта - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь установить состояние в ответ с ответом от бэкэнда, как показано ниже. Ответ сохраняется в result.

const [object,setObjectState] = useState()

axios.post(`api`, { withCredentials: true })
     .then( res => {
            const result = res.data; //result : {id :  1, name : firstName}
            setObjectState({result})
    }

При установке состояния, как указано выше setState({result} устанавливает состояние object как { result :{id : 1, name : firstName}}

Как установить состояние object как {id : 1, name : firstName}, без явной деструктуризации объекта result?

Я знаю, что мы можем извлечь значения по отдельности из result и затем создать новый объект для setObjectState. Но в моем реальном случае использования `result содержит слишком много значений, и я не хочу касаться кода в случае, если серверная часть отправляет новые значения.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

Вы можете сделать что-то подобное с оператором распространения. Это распространило бы данные внутри result и установило бы это как состояние.

const [object,setObjectState] = useState()

axios.post(`api`, { withCredentials: true })
     .then( res => {
            const result = res.data; //result : {id :  1, name : firstName}
            setObjectState({...result})
    }
1 голос
/ 24 февраля 2020

Оператор распространения здесь для спасения.

, если вы хотите сохранить прежнее состояние (что является нормальным случаем):

axios.post(`api`, { withCredentials: true })
     .then( res => {
            const result = res.data; //result : {id :  1, name : firstName}
            setObjectState({...object, ...result})
    }

, если вы не хочу сохранять прежнее состояние (не знаю почему :))

axios.post(`api`, { withCredentials: true })
     .then( res => {
            const result = res.data; //result : {id :  1, name : firstName}
            setObjectState({...result})
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...