位置:首页 > web前端 > react

react-8 自定义组件如何向下传递表单数据

dearweb 发布:2023-03-31 09:41:03阅读:

以下是一个简单的实例,展示如何在 React 中自定义组件中处理表单数据并将其传递给父组件:


import React, { useState } from 'react';

interface MyCustomComponentProps {
  onChange: (value: string) => void;
}

const MyCustomComponent: React.FC<MyCustomComponentProps> = ({ onChange }) => {
  const [inputValue, setInputValue] = useState('');

  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    const value = event.target.value;
    setInputValue(value);
    onChange(value);
  }

  return (
    <input type="text" value={inputValue} onChange={handleInputChange} />
  );
}

interface MyFormProps {
  onSubmit: (formData: any) => void;
}

const MyForm: React.FC<MyFormProps> = ({ onSubmit }) => {
  const [formValue, setFormValue] = useState('');

  const handleFormSubmit = (event: React.FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    onSubmit(formValue);
  }

  const handleCustomComponentChange = (value: string) => {
    setFormValue(value);
  }

  return (
    <form onSubmit={handleFormSubmit}>
      <MyCustomComponent onChange={handleCustomComponentChange} />
      <button type="submit">Submit</button>
    </form>
  );
}

export default MyForm;


在上面的代码中,`MyCustomComponent` 是一个自定义组件,它接收一个 `onChange` 属性,该属性是一个回调函数,用于在输入框的值发生变化时将新值传递给父组件。在 `MyCustomComponent` 中,我们使用 `useState` 钩子来跟踪输入框的值,并在输入框的值发生变化时调用 `onChange` 回调函数。


`MyForm` 是一个包含自定义组件的表单,它接收一个 `onSubmit` 属性,该属性是一个回调函数,用于在表单提交时将表单数据传递给父组件。在 `MyForm` 中,我们使用 `useState` 钩子来跟踪表单的值,并在表单提交时调用 `onSubmit` 回调函数。我们还定义了一个 `handleCustomComponentChange` 回调函数,用于将自定义组件中的值传递给父组件。


最后,我们在 `MyForm` 中渲染了自定义组件和一个提交按钮,并将 `handleCustomComponentChange` 传递给自定义组件的 `onChange` 属性,以便在自定义组件中的值发生变化时将其传递给父组件。当用户提交表单时,我们调用 `handleFormSubmit` 回调函数,并将表单数据传递给父组件。


24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看