简体   繁体   中英

TypeError: Cannot read property 'setValues' of undefined | React

when i use setValues() function on handleInputChange i get this error:

错误图像

code:

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;

how can i solve this error? any response will be appreciated

In class component you would use this.setValues , but in functional components you can directly use setValues without this keyword.

Change:

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

To:

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

Also useState returns an array, so you would use it like this:

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

Please go through the documentation: https://reactjs.org/docs/hooks-state.html

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;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM