TypeError: Невозможно прочитать свойство 'setValues' из неопределенного | реагировать - PullRequest
1 голос
/ 25 апреля 2020

когда я использую функцию setValues ​​() на handleInputChange, я получаю эту ошибку:

error-image

код:

import React, { useState, useEffect } from "react";

const useForm = (initialFieldValues) => {
  const { values, setValues } = useState(initialFieldValues);

  const handleInputChange = (e) => {
    const { name, value } = e.target;
    const fieldValue = { [name]: value };

    this.setValues({
      ...values,
      ...fieldValue,
    });
  };

  return {
    values,
    setValues,
    handleInputChange,
  };
};

export default useForm;

как я могу решить эту ошибку? Любой ответ будет оценен

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

В компоненте класса вы бы использовали this.setValues, но в функциональных компонентах вы можете напрямую использовать setValues без ключевого слова this.

Изменение:

this.setValues({
      ...values,
      ...fieldValue,
    });

Кому:

setValues({
      ...values,
      ...fieldValue,
    });

Также useState возвращает массив, поэтому вы можете использовать его следующим образом:

const [ values, setValues ] = useState(initialFieldValues);

Пожалуйста, go в документации: https://reactjs.org/docs/hooks-state.html

1 голос
/ 25 апреля 2020
import React, { useState, useEffect } from "react";

const useForm = (initialFieldValues) => {
  const [ values, setValues ] = useState(initialFieldValues);

  const handleInputChange = (e) => {
    const { name, value } = e.target;
    const fieldValue = { [name]: value };

    setValues({
      ...values,
      ...fieldValue,
    });
  };

  return {
    values,
    setValues,
    handleInputChange,
  };
};

export default useForm;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...