当前位置:首页 > React

react如何获取表单内容

2026-01-24 19:50:05React

获取表单内容的几种方法

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

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元素获取值:

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如何获取表单内容

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

相关文章

css制作表单

css制作表单

使用CSS制作表单的基本方法 创建一个美观且功能完善的表单需要结合HTML结构和CSS样式。以下是关键步骤和示例代码: HTML基础结构 <form class="my-form"&…

vue快速实现表单

vue快速实现表单

Vue 快速实现表单的方法 使用 Vue 快速实现表单可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 双向绑定 Vue 提供了 v-model 指令,可以快速实现表单数据的双向绑…

vue新增表单实现

vue新增表单实现

Vue 新增表单实现方法 数据绑定与表单结构 使用v-model实现双向数据绑定,在<script>中定义表单数据对象: data() { return { formDat…

php 实现表单验证

php 实现表单验证

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

vue实现内容轮播

vue实现内容轮播

使用 Vue 实现内容轮播 基础轮播实现 安装依赖(如使用第三方库) 若选择 vue-awesome-swiper,通过以下命令安装: npm install swiper vue-aweso…

vue实现表格内容

vue实现表格内容

Vue实现表格内容的方法 使用原生HTML表格 在Vue模板中直接使用HTML的<table>标签构建表格结构,通过v-for指令动态渲染数据。 <template>…