当前位置:首页 > React

react实现清空表单

2026-01-26 21:52:32React

使用受控组件重置表单

在React中,通过受控组件管理表单状态时,可以直接将表单字段的value绑定到组件的state,并通过更新state实现清空。

react实现清空表单

import React, { useState } from 'react';

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

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

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log('Submitted:', formData);
    // 清空表单
    setFormData({ username: '', email: '' });
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        name="username"
        value={formData.username}
        onChange={handleChange}
      />
      <input
        name="email"
        value={formData.email}
        onChange={handleChange}
      />
      <button type="submit">Submit</button>
      <button type="button" onClick={() => setFormData({ username: '', email: '' })}>
        Clear
      </button>
    </form>
  );
}

使用非受控组件与ref重置表单

对于非受控组件,可以通过ref直接访问DOM元素并调用reset()方法。

react实现清空表单

import React, { useRef } from 'react';

function Form() {
  const formRef = useRef(null);

  const handleSubmit = (e) => {
    e.preventDefault();
    const formData = new FormData(formRef.current);
    console.log('Submitted:', Object.fromEntries(formData));
    // 清空表单
    formRef.current.reset();
  };

  return (
    <form ref={formRef} onSubmit={handleSubmit}>
      <input name="username" defaultValue="" />
      <input name="email" defaultValue="" />
      <button type="submit">Submit</button>
      <button type="button" onClick={() => formRef.current.reset()}>
        Clear
      </button>
    </form>
  );
}

使用第三方库(如Formik)

Formik等库提供内置的resetForm方法,适用于复杂表单场景。

import { useFormik } from 'formik';

function Form() {
  const formik = useFormik({
    initialValues: { username: '', email: '' },
    onSubmit: (values) => {
      console.log('Submitted:', values);
      formik.resetForm(); // 清空表单
    },
  });

  return (
    <form onSubmit={formik.handleSubmit}>
      <input
        name="username"
        value={formik.values.username}
        onChange={formik.handleChange}
      />
      <input
        name="email"
        value={formik.values.email}
        onChange={formik.handleChange}
      />
      <button type="submit">Submit</button>
      <button type="button" onClick={formik.resetForm}>
        Clear
      </button>
    </form>
  );
}

动态表单字段清空

若表单字段动态生成,需确保清空逻辑覆盖所有字段。

const initialValues = { field1: '', field2: '' };

function DynamicForm() {
  const [fields, setFields] = useState(initialValues);

  const clearForm = () => {
    setFields(initialValues); // 重置为初始值
  };

  return (
    <form>
      {Object.keys(fields).map((key) => (
        <input
          key={key}
          name={key}
          value={fields[key]}
          onChange={(e) => setFields({ ...fields, [key]: e.target.value })}
        />
      ))}
      <button type="button" onClick={clearForm}>
        Clear
      </button>
    </form>
  );
}

标签: 表单清空
分享给朋友:

相关文章

css表格表单制作

css表格表单制作

CSS表格制作 使用CSS创建表格主要涉及<table>标签及其子元素的样式控制。以下是一个基础示例: <table class="styled-table"> <…

form表单elementui

form表单elementui

Form 表单 ElementUI 使用指南 ElementUI 提供了强大的表单组件,支持数据绑定、验证和自定义样式等功能。以下是使用方法和常见场景的解决方案。 基本表单结构 使用 el-form…

vue表单实现

vue表单实现

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

css制作表单

css制作表单

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

vue新增表单实现

vue新增表单实现

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

jquery验证表单

jquery验证表单

jQuery 表单验证方法 使用 jQuery 进行表单验证可以通过多种方式实现,以下是几种常见的方法: 使用 jQuery Validate 插件 jQuery Validate 是一个流行的表…