首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在react js中只发送formik表单中的非空值提交

在React JS中使用Formik库提交表单时,有时我们只想提交非空值。这可以通过自定义提交处理函数来实现,该函数会检查每个字段的值,然后只发送非空值。

基础概念

Formik是一个流行的React库,用于简化表单的状态管理和验证。它允许你通过values对象访问表单字段的值,并通过setFieldValue方法更新这些值。

相关优势

  • 简化状态管理:Formik自动处理表单的状态,减少了样板代码。
  • 内置验证:Formik可以与Yup等库结合使用,轻松实现表单验证。
  • 易于集成:Formik可以轻松与其他React组件和库集成。

类型

  • 受控组件:Formik管理的表单字段是受控组件,这意味着它们的值由React状态控制。
  • 提交处理:Formik提供了一个onSubmit函数,当表单提交时会被调用。

应用场景

  • 用户注册/登录表单:在这些表单中,可能希望只提交有效的、非空的字段。
  • 数据收集表单:在收集用户数据的表单中,可能需要过滤掉未填写的字段。

问题与解决方案

如果你遇到只发送formik表单中的非空值提交的问题,可以通过以下步骤解决:

  1. 自定义提交函数:在onSubmit函数中,创建一个新的对象,只包含非空字段。
代码语言:txt
复制
import React from 'react';
import { Formik, Form, Field } from 'formik';

const MyForm = () => {
  const handleSubmit = (values, { setSubmitting }) => {
    // 创建一个新对象,只包含非空字段
    const nonEmptyValues = Object.entries(values).reduce((acc, [key, value]) => {
      if (value) {
        acc[key] = value;
      }
      return acc;
    }, {});

    // 发送非空值到服务器
    console.log(nonEmptyValues);
    // 这里可以替换为实际的API调用
    setSubmitting(false);
  };

  return (
    <Formik
      initialValues={{ firstName: '', lastName: '', email: '' }}
      onSubmit={handleSubmit}
    >
      {({ isSubmitting }) => (
        <Form>
          <Field type="text" name="firstName" placeholder="First Name" />
          <Field type="text" name="lastName" placeholder="Last Name" />
          <Field type="email" name="email" placeholder="Email" />
          <button type="submit" disabled={isSubmitting}>
            Submit
          </button>
        </Form>
      )}
    </Formik>
  );
};

export default MyForm;

参考链接

通过这种方式,你可以确保只有非空字段被提交到服务器,从而减少不必要的数据传输和处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React 组件优化

Formik 工具库 Formik 库可以让你在 React 轻松构建出健壮 Form 表单程序。...使用时需要先下载: npm install formik --save Formik 库可以与 yup 库一块使用,库作者也推荐搭配使用,yup 是一个用于验证字段库,它用法类似于 React ... 组件比较复杂,构建 Formik 表单程序时,Formik 和下面它几个属性是需要设置: initialValues 接收一个对象,表示初始化表单控件,对象键应是表单...name children 部分可以是一个函数,这个函数可以接收到 porps; 对 form 表单小小封装,<Form... Formik 官网,作者也举例了使用 redux-form 缺陷: 表单状态本质上是短暂和局部,并不需要 redux 对其进行跟踪; 使用 redux 管理状态时,状态更新要派发 action

7.2K20
  • 2023 React 生态系统,以及我一些吐槽……

    表单处理 Formik 面对现实吧, React 处理表单确实很冗长。更糟糕是,大多数表单辅助工具做了太多魔法,并且通常会伴随着显著性能损耗。...Formik 是一个小型库,可以帮助您解决以下三个最令人讨厌问题: 将放入和取出表单状态 验证和错误消息 处理表单提交 通过将所有这些放在一个地方,Formik 可以让事情井然有序,使得测试、重构和理解您表单变得轻而易举...由于大约有 30 个独特表单,很快就明显发现,我们可以通过标准化不仅是输入组件,还有数据表单流动方式来获益。 为什么不使用 Redux-Form?...不是因为我认为 React 实现表单方面采取了错误方法,而是因为使用 React 时,表单是最具挑战性问题。 许多框架都有自己解决方案来处理表单。AngularJS 在这方面做得非常好。...此外,Formik 依赖于表单元素,并且控制 Redux 存储时存在一些挑战。

    73030

    2020 年你应该知道 React

    例如,gatsby-Firebase-authentication 样板文件 Gatsby.js 为您提供了完整 Firebase 身份验证机制,但是其他所有内容都被省略了。...以下是一些流行解决方案: nivo Victory react-vis Recharts Chart Parts React 表单 React 中最流行表单库是 Formik。...它提供了从验证到提交到形成状态管理所需一切。另外一个选择是 React Hook Form。如果您开始使用更复杂表单,这两种方法对于 React 应用程序都是有效解决方案。...建议: Formik React Hook Form React 数据获取库 很快,您就必须向远程 API 发出请求,以便在 React 获取数据。...虽然样式指南给出建议,但是 linter 应用程序强制执行这个建议。例如,你可以要求遵循流行 Airbnb 样式指南,你 IED/编辑器会告诉你每一个错误。

    14.4K40

    盘点React开发不可或缺工具

    ,比如组件传递等等, 而通过react cheatsheet这个网站,你就可以方便地查看它们。...React Dev Tools 开发原生js时候,我们经常使用浏览器自带开发者工具,它足以帮助我们查看和调试js变量各种信息,但是对于react框架来说,因为它是采用动态渲染生成代码结构,...useHooks Hooks是 React 新增功能,可让我们不编写类情况下使用状态和其他 React 功能。...Formik 表单处理是网页开发经常会遇到问题,而Formik是一个可以React构建表单组件。...它是一个小型库,可以让表单各个状态都能被保存,对于错误处理和表单验证,它都提供了非常友好处理方式,可以说它就是专门为表单处理而诞生

    1.7K20

    回望过去,展望未来- 2024 React 生态一览表

    CoinFlip调用。 A页面时候,CoinFlipchildren代码接受flipResults。...Next.js[4]:Next.js,建立 React 之上框架,它作为服务器渲染 React 应用首选选择,并提供灵活路由选项。 3....Formik Formik[8] 提供一组工具和组件,使管理表单状态、验证和提交变得容易。使用 Formik 唯一缺点是它没有维护。 2....样式 之前浏览器第四种语言-WebAssembly通过如下图,介绍了在网页JS/CSS/HTML/WASM重要职责。 CSS作为「表现层」,是一个页面锦上添花存在。...这是一个「无头 UI 库」,可以让我们各种框架构建强大表格和数据网格,如 TS/JSReact、Vue、Solid 和 Svelte,同时保留对标记和样式控制 12.

    69410

    React入门学习笔记

    React学习笔记 安装 1、通过js文件引入Reactjs文件 2、npm部署React环境 详情请参考官方文档 组件 Props数据传递 数据可以通过Props两个组件间传递(父组件流向子组件...JSX语法,可以大括号内放置任何有效JS表达式; import React, { Component } from 'react'; import ReactDOM from 'react-dom...受控组件 HTML表单元素表单元素会自己维护自己状态而在React可变状态通常是有state属性控制,并且只可以使用setState()更新属性;为了适应Reactstate成为“唯一数据源...”,渲染表单组件还控制着输入过程中表单发生操作,被React以这种方式控制取制表单输入元素称之为“受控组件”。...React文档也指出React表单受控组件处理比较烦杂,而且存在受控组件;官方给出了推荐[Formik]

    2.5K20

    React】学习笔记(一)——React入门、面向组件编程、函数柯里化

    构造器new实例时调用,render每次状态更新和初始化时候调用,只要我们通过合法方式(this.setState API)更新组件状态,React会自己帮我们调用render方法更新组件...即不受setState()控制,与传统HTML表单输入相似,input输入即显示最新受控组件,可以使用一个ref来从DOM获得表单。...受控组件底层实现时是在其内部维护了自己状态state,这样表现出用户输入任何都能反应到元素上。...React,可变状态通常保存在组件状态属性,并且只能使用 setState() 进行更新,而呈现表单React组件也控制着在后续用户输入时该表单中发生情况,以这种由React控制输入表单元素而改变其方式...例如:某些form表单信息编辑时,input表单元素需要初始显示服务器返回某个然后进行编辑。 2、受控组件使用场景:一般用于无任何动态初始信息情况。

    5K30

    React19 她来了,她来了,他带着礼物走来了

    我们 JSX ,我们可以删除 onSubmit 事件,并使用 action 属性。action 属性将是一个「提交数据方法」,可以客户端或服务器端提交数据。...'Input 为' : 'Input有'} ); } export default ExampleComponent; 之后写法 在下面的例子,我们可以看到...); fn:表单提交或按钮按下时要调用函数。 initialState:我们希望状态初始是什么。它可以是任何可序列化首次调用操作后,此参数将被忽略。 permalink:这是可选。... submitForm ,我们正在检查表单。 prevState:初始状态将为 null,之后它将返回表单 prevState。...这个方法负责表单提交。这也可以是 async 。 sendFormData 负责将表单发送到 fakeDelayAction 设置默认状态。

    17910

    2022 年 React 生态

    这并不是你日常工作必须要做事情,但这是了解底层工具实现原理一个很好方式。...CSS 属性样式对象作为 HTML 样式属性键/对,从内联样式和基本 CSS 开始就可以。...它提供了从验证(一般会集成 yup 和 zod)到提交表单状态管理所需一切。之前流行另一种方式是 Formik。两者都是不错解决方案。...这个领域另一个选择是 React Final Form 。毕竟,如果你已经使用 React UI组件库了,你还可以查看他们内置表单解决方案。...建议: React Hook Form 集成 yup 或 zod 进行表单验证 如果已经使用组件库了,看看内置表单能不能满足需求 链接: React Hook Form:https://react-hook-form.com

    5.8K20

    React学习笔记(三)—— 组件高级

    二、受控组件与受控组件 2.1、受控组件 如果一个表单元素是由React 来管理,那么它就是一个受控组件。...它们受控主要原理是,通过表单元素 value属性设置表单元素,通过表单元素onChange 事件监听变化,并将变化同步到React 组件 state。...一个受控组件表单数据是由 React 组件来管理。另一种替代方案是使用受控组件,这时表单数据将交由 DOM 节点来处理。...2.2.2、默认 React 渲染生命周期时,表单元素上 value 将会覆盖 DOM 节点中受控组件,你经常希望 React 能赋予组件一个初始,但是不去控制后续更新。... React , 始终是一个受控组件,因为它只能由用户设置,而不能通过代码控制。

    8.3K20

    你不知道33个令人惊艳React开发库

    今天文章,将介绍每个 React 开发人员都应该熟悉 33 个令人惊叹 React 库。而且是由其他开发人员经过良好测试和维护令人惊叹 React 库。...formlink image.png Formik 是世界上最流行 ReactReact Native 开源表单库。...email.js image.png 直接从 JavaScript 发送电子邮件。无需服务器代码。专注于重要事情!...react-virtual image.png 仅在 TS/JSReact、Vue、Solid 和 Svelte 以 60FPS 速度虚拟化大量可滚动元素可见 DOM 节点,同时保留对标记和样式...react-query image.png React 高性能且强大数据同步。 ReactReact Native 应用程序获取、缓存和更新数据,而无需触及任何“全局状态”。

    33320

    翻译 | 玩转 React 表单 —— 受控组件详解

    受控组件有两个特点: 受控组件提供方法,让我们每次 onChange 事件发生时控制它们数据,而不是一次性地获取表单数据(例如用户点提交按钮时)。...“被控制“ 表单数据保存在 state 本文示例,是父组件或容器组件 state)。...如果 input 组件不在 selectedOptions 数组,我们要将添加进该数组。 如果 input 组件 selectedOptions 数组,我们要从数组删除该。...清除表单子组件显示数据很简单,只要把容器 state (译注:这里是指 state 对象上挂载各个变量)设置成数组和空字符串就可以了(如果有数字输入框的话则是将设置成 0)。...2. handleFormSubmit 为了提交表单数据,我们从 state 抽取需要提交属性,创建了一个对象。接着使用 AJAX 库或技术将这些数据发送给 API(本文不包含此类内容)。

    11.4K100

    【译】73个超棒且可提高生产力 NPM 包

    配置模块 24.Config[45] 设置存储应用程序配置文件,可以由环境变量、命令行参数或外部源覆盖和扩展。...模板语言 29.Mustache[50] Mustache 是一种无逻辑模板语法。它可以用于 HTML,配置文件,源代码等任何东西。它工作原理是使用 hash 或对象中提供模板展开标记。...39.Faker[62] 实用 npm 包,用于浏览器和 Node.js 制造大量假数据。 ✅ 校验工具 40.Validator[63] 便捷字符串验证器,使程序更加健壮库。...表单和邮件 42.Formik[65] FormikReactReact Native 一个流行开源表单库。它具有易于使用、声明性和适应性特点。...44.Nodemailer[67] Nodemailer 是 Node.js 应用程序一个模块,允许轻松发送电子邮件。

    5.9K30
    领券