当前位置:首页 > React

react实现清空表单

2026-01-26 21:52:32React

使用受控组件重置表单

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

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()方法。

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>
  );
}

动态表单字段清空

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

react实现清空表单

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>
  );
}

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

相关文章

php 实现表单验证

php 实现表单验证

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

vue实现form表单

vue实现form表单

Vue 实现 Form 表单的方法 使用 v-model 实现双向绑定 在 Vue 中,可以通过 v-model 指令实现表单元素与数据的双向绑定。例如,创建一个包含输入框、复选框和下拉框的表单:…

vue实现收缩表单

vue实现收缩表单

Vue 实现收缩表单的方法 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if 可以轻松实现表单的收缩效果。v-show 通过 CSS 的 display 属…

vue实现表单编辑原理

vue实现表单编辑原理

Vue 表单编辑实现原理 Vue 实现表单编辑的核心原理是通过数据绑定、响应式系统和事件监听机制,将表单输入与组件状态同步更新。以下是关键实现方式: 双向数据绑定(v-model) 使用 v-mod…

vue如何实现动态表单

vue如何实现动态表单

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

vue实现表单提交功能

vue实现表单提交功能

表单基础结构 在Vue中实现表单提交功能,通常使用v-model指令实现双向数据绑定。以下是一个基础表单结构示例: <template> <form @submit.preve…