当前位置:首页 > 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的情况
  • 表单库能显著减少样板代码,提供更好的性能优化

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

相关文章

jquery表单验证

jquery表单验证

jQuery 表单验证的实现方法 使用 jQuery 实现表单验证可以通过原生 JavaScript 结合正则表达式,或借助插件如 jQuery Validation Plugin 完成。以下是两种常…

vue实现表单分组

vue实现表单分组

Vue 表单分组实现方法 使用 <fieldset> 和 <legend> 标签 HTML 原生提供 <fieldset> 和 <legend> 标签实…

vue实现搜索内容

vue实现搜索内容

Vue实现搜索功能的方法 在Vue中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法: 使用计算属性实现搜索 计算属性非常适合处理搜索逻辑,能够根据输入的关键词动态过滤数据。 <…

用vue实现表单

用vue实现表单

Vue 表单实现方法 使用 v-model 实现双向绑定 Vue 的 v-model 指令可以轻松实现表单元素与数据的双向绑定。在 Vue 组件中定义数据属性,然后将其绑定到表单元素上。 <t…

vue如何实现动态表单

vue如何实现动态表单

Vue 动态表单实现方法 数据驱动表单结构 通过 v-for 循环渲染表单项,绑定动态数据源。表单结构随数据变化自动更新。 <template> <form> &…

vue可以实现表单吗

vue可以实现表单吗

Vue 表单实现基础 Vue 通过数据绑定和指令系统(如 v-model)可以高效实现表单功能。表单元素(输入框、复选框、单选按钮等)的值会与 Vue 实例的数据属性自动同步。 示例代码:基础表…