В перехватчиках реагирования как передать вновь созданный объект в объект состояния? - PullRequest
2 голосов
/ 23 июня 2019

Как мне передать err на errors : {} здесь?

const data = { name: "", errors: {} }
const [values, setValues] = useState(data)
const handleSubmit = () => {
     const err = validate();  // I receive an object in err
    setValues({ ...values, errors: err }) // I cant set err to //errors: {} above
}

1 Ответ

0 голосов
/ 24 июня 2019

Из React DOCs - State Hook , мы получаем, что:

Переменные состояния могут просто отлично удерживать объекты и массивы, так что вы все равно можете группировать связанные данные.Однако, в отличие от this.setState в классе, обновление переменной состояния всегда заменяет ее, а не объединяет.

Кроме того, из Часто задаваемые вопросы по хукам :

Теперь предположим, что мы хотим написать некоторую логику, которая изменяет left и top, когда пользователь перемещает свою мышь.Обратите внимание , как мы должны объединить эти поля в предыдущий объект состояния вручную:

function handleWindowMouseMove(e) {
     // Spreading "...state" ensures we don't "lose" width and height
     setState(state => ({ ...state, left: e.pageX, top: e.pageY }));
   }

Следовательно, способ, которым вы в настоящее время делаете это, является правильным.

...