当前位置:首页 > 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>
  );
}

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

相关文章

vue实现动态表单

vue实现动态表单

Vue 动态表单实现方法 使用 v-for 动态渲染表单字段 通过遍历数组动态生成表单项,数据驱动视图变化。表单字段配置可存储在数组中,修改数组即可实现表单动态更新。 <template>…

vue实现切换表单

vue实现切换表单

Vue 实现表单切换的方法 动态组件切换 使用 Vue 的 <component :is="currentComponent"> 动态加载不同表单组件,通过 v-model 绑定数据。…

jquery验证表单

jquery验证表单

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

vue实现form表单

vue实现form表单

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

vue 实现表单验证

vue 实现表单验证

使用 Vue 内置验证指令 Vue 提供了一些内置指令用于表单验证,例如 v-model 和 v-bind。结合 HTML5 的表单验证属性,可以快速实现基础验证。 <template>…

用vue实现表单验证

用vue实现表单验证

使用Vue实现表单验证 在Vue中实现表单验证可以通过多种方式完成,包括内置指令、自定义验证逻辑或第三方库。以下是几种常见的方法: 使用Vue内置指令和计算属性 通过v-model绑定表单输入,结合…