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

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

相关文章

react如何提交表单

react如何提交表单

表单提交的基本方法 在React中提交表单通常通过控制组件状态和事件处理实现。表单数据通过onSubmit事件捕获,并阻止默认提交行为以避免页面刷新。 import { useState } fro…

php 实现表单验证

php 实现表单验证

表单验证基础方法 使用内置函数和条件判断进行基础验证,例如检查空值、长度限制等: $name = $_POST['name'] ?? ''; $email = $_POST['email'] ??…

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…

vue实现表单提交

vue实现表单提交

Vue 表单提交的实现方法 Vue 提供了多种方式实现表单提交,以下是常见的几种方法: 双向绑定(v-model) 使用 v-model 实现表单数据的双向绑定,通过方法处理提交逻辑: <t…

vue实现内容定位

vue实现内容定位

内容定位的实现方法 在Vue中实现内容定位通常涉及滚动到页面特定位置或锚点跳转,以下是几种常见实现方式: 使用HTML锚点 通过<a>标签的href属性直接跳转到页面内指定ID的元素:…

vue实现内容左右滚动

vue实现内容左右滚动

实现内容左右滚动的方法 在Vue中实现内容左右滚动可以通过多种方式完成,以下是几种常见的方法: 使用CSS的overflow-x属性 通过设置CSS的overflow-x: auto或overflo…