【问题标题】:react-hook-form - Cannot pass form data to a parent componentreact-hook-form - 无法将表单数据传递给父组件
【发布时间】:2020-10-25 09:20:05
【问题描述】:

我正在使用 react-hook-form 并尝试将数据从表单传递到其父级。 为此,我试图通过回调传递数据,但它不起作用。 当我在父组件中 console.log data 时,我得到未定义。

父组件

import React from 'react';
import InputForm from './InputForm';

const App = (data) => {
  const onFormSubmit = () => {
    console.log(data.name);
  };

  return (
    <div className='App'>
       <InputForm onceSubmited={() => onFormSubmit()} />
    </div>
  );
};

export default App;

子组件

import React from 'react';
import { useForm } from 'react-hook-form';

const InputForm = ({ onceSubmited }) => {
  const { register, handleSubmit } = useForm();

  const onSubmit = (data) => {
    console.log(data);
    onceSubmited(data);
  };

  return (
    <>
      <form onSubmit={handleSubmit(onSubmit)}>
          <input
            type='text'
            name='name'
            ref={register}
          />

          <input
            type='email'
            name='email'
            ref={register}
          />
          
        <button type='submit'>
          Submit
        </button>
      </Form>
    </>
  );
};

export default InputForm;

【问题讨论】:

  • 你想帮我试试&lt;InputForm onceSubmited={(data) =&gt; onFormSubmit(data)} /&gt;吗?

标签: reactjs react-hooks


【解决方案1】:

您需要在箭头函数中传递参数。这应该使它工作:

import React from 'react';
import InputForm from './InputForm';

const App = () => {
  const onFormSubmit = (data) => {
    console.log(data.name);
  };

  return (
    <div className='App'>
       <InputForm onceSubmited={(data) => onFormSubmit(data)} />
    </div>
  );
};

export default App;

【讨论】:

  • 你仍然收到undefined
  • 现在我得到一个空对象。
  • 我编辑了答案。还有另一个没有参数的箭头函数
  • 顺便说一句,更好的方法是将数据提升到状态并在应用程序级别对其进行初始化
  • 你能告诉我怎么做吗?我只是想学习 React。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多