当前位置:首页 > React

react如何获取表单内容

2026-01-24 19:50:05React

获取表单内容的几种方法

受控组件方式
在React中推荐使用受控组件管理表单数据。通过onChange事件和value属性绑定表单元素与状态:

react如何获取表单内容

import { useState } from 'react';

function Form() {
  const [formData, setFormData] = useState({
    username: '',
    password: ''
  });

  const handleChange = (e) => {
    setFormData({
      ...formData,
      [e.target.name]: e.target.value
    });
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(formData); // 获取到的表单数据
  };

  return (
    <form onSubmit={handleSubmit}>
      <input 
        name="username" 
        value={formData.username} 
        onChange={handleChange} 
      />
      <input 
        name="password" 
        type="password" 
        value={formData.password} 
        onChange={handleChange} 
      />
      <button type="submit">提交</button>
    </form>
  );
}

非受控组件方式
通过useRef直接访问DOM元素获取值:

react如何获取表单内容

import { useRef } from 'react';

function Form() {
  const inputRef = useRef();

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(inputRef.current.value); // 通过ref获取值
  };

  return (
    <form onSubmit={handleSubmit}>
      <input ref={inputRef} />
      <button type="submit">提交</button>
    </form>
  );
}

FormData API方式
适用于原生表单提交场景,可通过FormData对象获取所有表单字段:

function Form() {
  const handleSubmit = (e) => {
    e.preventDefault();
    const formData = new FormData(e.target);
    console.log(Object.fromEntries(formData)); // 转换为普通对象
  };

  return (
    <form onSubmit={handleSubmit}>
      <input name="email" />
      <input name="phone" />
      <button type="submit">提交</button>
    </form>
  );
}

表单库方案

对于复杂表单场景,推荐使用表单库如FormikReact Hook Form。以React Hook Form为例:

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

function Form() {
  const { register, handleSubmit } = useForm();

  const onSubmit = (data) => {
    console.log(data); // 自动收集的表单数据
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input {...register('username')} />
      <input {...register('password')} type="password" />
      <button type="submit">提交</button>
    </form>
  );
}

注意事项

  • 受控组件适合需要实时验证或即时反馈的场景
  • 非受控组件适合简单表单或需要直接操作DOM的情况
  • 表单库能显著减少样板代码,提供更好的性能优化

标签: 表单内容
分享给朋友:

相关文章

vue实现导航切换内容

vue实现导航切换内容

Vue 实现导航切换内容 在 Vue 中实现导航切换内容可以通过动态组件、路由或条件渲染等方式完成。以下是几种常见方法: 动态组件结合 v-if 或 v-show 通过 v-if 或 v-show…

vue表单实现

vue表单实现

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单输入与应用状态的双向绑定,适用于各类表单控件。例如文本输入框: <input v-model="message" pla…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form actio…

jquery表单

jquery表单

jQuery 表单操作 jQuery 提供了丰富的 API 用于表单操作,包括表单元素的选择、值获取与设置、事件处理等。 表单元素选择 使用 jQuery 选择器可以方便地选取表单元素: //…

css 制作表单

css 制作表单

使用CSS制作表单的基本方法 创建表单时,HTML负责结构,CSS负责样式。表单元素包括输入框、按钮、下拉菜单等,通过CSS可以统一风格并提升用户体验。 HTML结构示例 <form cla…

css制作表单

css制作表单

创建基本表单结构 使用HTML的<form>标签作为表单容器,内部包含输入字段、标签和提交按钮。表单元素通常需要<label>关联以提高可访问性。 <form>…