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

Formik复选框不会重新呈现

Formik是一个用于构建表单的React库。复选框是表单中常用的一种输入类型,用于选择多个选项。当使用Formik构建复选框时,有时会遇到复选框不会重新呈现的问题。

复选框不会重新呈现的原因可能是因为Formik默认使用浅比较来检测表单字段的变化。当复选框的值发生变化时,由于复选框的值是一个数组,而数组是引用类型,浅比较无法检测到数组内容的变化,导致复选框不会重新呈现。

解决这个问题的方法是使用Formik提供的setFieldValue方法来手动更新复选框的值。当复选框的值发生变化时,可以通过调用setFieldValue方法来更新Formik中对应字段的值,从而触发复选框的重新呈现。

以下是一个示例代码:

代码语言:txt
复制
import React from 'react';
import { Formik, Form, Field } from 'formik';

const initialValues = {
  options: [],
};

const App = () => {
  const handleCheckboxChange = (value, setFieldValue) => {
    const options = [...formik.values.options]; // 创建一个新的数组副本
    const index = options.indexOf(value);

    if (index > -1) {
      options.splice(index, 1); // 从数组中移除选中的值
    } else {
      options.push(value); // 将选中的值添加到数组中
    }

    setFieldValue('options', options); // 更新Formik中对应字段的值
  };

  return (
    <Formik initialValues={initialValues} onSubmit={handleSubmit}>
      {formik => (
        <Form>
          <label>
            <Field
              type="checkbox"
              name="options"
              value="option1"
              onChange={() => handleCheckboxChange('option1', formik.setFieldValue)}
            />
            Option 1
          </label>
          <label>
            <Field
              type="checkbox"
              name="options"
              value="option2"
              onChange={() => handleCheckboxChange('option2', formik.setFieldValue)}
            />
            Option 2
          </label>
          {/* 其他复选框 */}
          <button type="submit">Submit</button>
        </Form>
      )}
    </Formik>
  );
};

export default App;

在上述示例中,我们通过handleCheckboxChange函数来处理复选框的变化。该函数接收选中的值和setFieldValue方法作为参数。在函数内部,我们首先创建一个新的数组副本,然后根据选中的值判断是否将其添加或移除。最后,我们调用setFieldValue方法来更新Formik中对应字段的值。

这样,当复选框的值发生变化时,Formik会重新呈现复选框,并更新对应字段的值。

关于Formik的更多信息和使用方法,可以参考腾讯云的相关产品和产品介绍链接地址。

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

相关·内容

Tkinter mainloop() 循环的逻辑,以及变量为什么不会重新赋值为初始值?

1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会重新赋值为它们的初始值?...也许我对 window.mainloop() 的作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们的初始值呢?...处理函数可以修改变量的值,但不会影响其他代码中的变量。也就是说,变量的值只会在处理函数中被修改,而在其他代码中不会被修改。...但是,window.mainloop() 并不会重新执行 GUI 代码,所以其他代码中的变量(如 x、y、a、b)不会被修改。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会重新赋值为初始值。

18710

2023 React 生态系统,以及我的一些吐槽……

我们将详细介绍 React Router 的三个主要功能: 订阅和操作历史记录堆栈 将 URL 与你的路由匹配 根据路由匹配呈现嵌套的 UI 想深入了解的话,请看这里:React Router 基本概念...Formik 是一个小型库,可以帮助您解决以下三个最令人讨厌的问题: 将值放入和取出表单状态 验证和错误消息 处理表单提交 通过将所有这些放在一个地方,Formik 可以让事情井然有序,使得测试、重构和理解您的表单变得轻而易举...我(@jaredpalmer)在与 @eonwhite 一起构建一个大型内部管理仪表板时编写了 Formik。...import React from "react"; import { Formik } from "formik"; const Basic = () => ( Anywhere...此外,Formik 依赖于表单元素,并且在控制 Redux 存储时存在一些挑战。

60430

2020 年你应该知道的 React 库

这样,它就不会意外地泄漏到其他人的样式中。尽管应用程序的某些部分仍然可以共享样式,但其他部分不必访问它。在 React 中,CSS Modules 通常将 CSS 文件与 React 组件文件共存。...以下是一些流行的解决方案: nivo Victory react-vis Recharts Chart Parts React 中的表单库 在 React 中最流行的表单库是 Formik。...建议: Formik React Hook Form React 中的数据获取库 很快,您就必须向远程 API 发出请求,以便在 React 中获取数据。...这两个库使得在 HTML 元素上呈现组件和模拟事件成为可能。然后,Jest 用于 DOM 节点上的断言。...因为您总是必须呈现组件中的列表。由于 JSX 是 HTML 和 JavaScript 的混合物,所以您可以使用 JavaScript 在数组上进行映射并返回 JSX。

14.4K40

聊一聊如何在 Vue3 表单中显示和隐藏元素

ref() 允许变量具有响应性,这意味着Vue将监视它并在其状态发生变化时重新渲染该操作。 使用 v-model 将元素与变量绑定,这将创建一个双向绑定。...当条件为true时,div的内容将被显示出来,否则不会被渲染到页面上。 Do you want insurance?...我有2个div,只有当 insuranceType 的值与 Home 或 Travel 匹配时,才会呈现出来,这与从 Insurance Type 选择菜单中选择的选项相匹配。...) 当你有一个复选框,它应该在被选中时渲染标记,那该如何实现呢?...} v-show与v-if的区别 需要注意的是, v-show 和 v-if 在控制元素可见性方面具有相似的作用,但它们之间存在一些关键的区别: v-show :该元素始终在DOM中呈现

73630

【译】W3C WAI-ARIA最佳实践 -- 表单

如果该组中的所有选项都被选中,该三态复选框呈现的整体状态为选中。 如果该组中的部分选项被选中,该三态复选框呈现的整体状态为部分选中(partially checked)。...如果该组中没有选项被选中,该三态复选框呈现的整体状态为未选中。 用户仅使用一个操作,就可以改变三态复选框组中所有选项的状态: 选中整体复选框,可以选中组中的所有选项。...请注意,如果没有menubar,例如从一个菜单按钮打开一个菜单,当焦点在一个没有子菜单的项目上时, Right Arrow 不会执行任何操作。...WAI-ARIA角色,状态和属性 菜单是呈现选项的容器。作为菜单的元素具有menu 或 menubar 角色。...如果激活按钮不会关闭当前上下文,按钮激活后,焦点仍停留在该按钮上,例如,一个应用或重新计算的按钮。

8.2K30

web调试工具——Fiddler使用介绍(一)

当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler....三、Fiddler如何拦截HTTPS请求 Fiddler默认只记录HTTP请求,但不会记录HTTPS,需要进行配置。...选择“Tools”-“Fiddler Options”-“HTTPS“,勾选“Decrypt HTTPS traffic”复选框,在弹出的对话框中点击”yes“即可,如下图所示 四、Fiddler界面功能简介...对于一些不需要关注的JS文件、CSS文件和Flash文件,以及一些图片文件,我们只需要选择相关的复选框,即可进行过滤。...六、查找会话和保存会话 1、当需要快速查找会话时,可以使用Ctrl+F打开查找界面,输入要查找的内容,还可以设置查找结果的呈现颜色,如下图 2、保存会话 有时候我们需要把会话保存下来,发给别人或者留给以后分析

1.1K90

【译】W3C WAI-ARIA最佳实践 -- 布局

如果焦点位于行中最右侧的单元格,则焦点不会移动。 Left Arrow: 将焦点向左移动一个单元格。如果焦点位于行中最左侧的单元格,则焦点不会移动。 Down Arrow: 将焦点往下移动一个单元格。...如果焦点位于列中的底部单元格上,则焦点不会移动。 Up Arrow: 将焦点往下移动一个单元格。如果焦点位于列中的顶部单元格上,则焦点不会移动。...如果网格包含带有用于选择行的复选框的列,则该键可以用作在焦点不在复选框时勾选框的快捷方式。 Control + A: 选择所有单元格。...如果网格包含用于选择行的复选框的列,当焦点不在复选框上时,可作为选中复选框的快捷键。 Control + A: 选择所有单元格。 Shift + Right Arrow: 向右扩展选择一个单元格。...工具栏 工具栏 是一个对控件进行分组的容器,例如,按钮、菜单按钮、或复选框。 当一组控件在视觉上呈现为一个组合,可以使用 toolbar 角色来告知屏幕阅读器用户分组的呈现和目的。

6.1K50

人效数据建模,一图搞定人效分析

那有了关键指标,有个支撑关键指标的数据,我们就开始要做数据图表了,因为数据都是关联的数据,我们需要在各个指标和字段之间切换,所有我们需要做一个动态的图表,以折线图的形式做数据的呈现。...支撑关键指标的 人数,成本,财务数据等,以复选框的形式呈现,这样你可以根据你选的关键指标,来选择你需要出现哪些字段,同样以折线图的形式出现。 ?...这个人效分析的模型,我们可以在列表框选择你要的关键指标,然后在下面的复选框选择你要的数据,这样你可以用过几组数据来分析关键指标的走向和数据的变化。 我们举了例子,先看下图: ?...我们选择了人力成本效率,然后在复选框选择了营业收入和人力成本,通过数据折线图,我们看到营收的增长在减缓,但是人力成本的的增幅却在增加,这个时候我们第一感觉是是不是要去控制人数,这个时候我们把人数的复选框选上...发现人数在增加,但是人力成本的增幅比人数的增幅少,所有可以得出结论是我人数增加,不会使人力成本有大幅的增长,所以在第二年可以继续按照公司业务来做编制。

8.7K40

在Salesforce Lightning Experience(闪电体验)提高性能和速度

由于客户端设备和远程web服务器之间的延迟问题;或客户网络拓扑,如虚拟专用网络,在Salesforce环境中重新路由到客户的org之前,需要通过公司办公室或数据中心路由通信。...重新启动浏览器或设备: 每周重新启动浏览器和客户端设备一次可能会有所帮助。运行各种应用程序的客户端设备或浏览器可能比需要的时间更长。...要在sandbox和production orgs中关闭此模式,请转到Setup,选择Lightning组件,然后取消选择Enable Debug模式复选框。...重新配置处理密集型页面: 如果您的Salesforce org有大量字段、低效的自定义组件或复杂的页面配置的页面,请考虑降低它们的复杂性,以提高呈现加载时间。...不在主选项卡中的组件不会在初始页面加载中呈现,而是只按需呈现。例如,将新闻和Twitter组件移动到次要的“新闻”选项卡。 所示。细节:将细节组件放置在辅助选项卡中,或者减少显示在细节面板中的字段。

1.9K20

如何用一张图来做全年去年的部门离职率动态对比

我们在做部门的离职率的数据分析的时候,我们希望能对比每个部门每个月的离职率,同时也希望可以对比去年同期的离职数据,同时我们还希望去年的数据对比可以进行选择,可以根据需要来呈现数据。...,主要是考虑折线图在数据的对比上会比较的清晰,如果是单个图表数据呈现的话,那我们会选择条形图。...二:窗体控件的选择 我们在窗体控件上选择了下拉框和复选框,下拉框主要是可以选择每个月份,复选框是可以选择要不要出现和去年的数据的对比,当然我们可以用其他的空间替代下拉框,这个没有特别标准的选择,只是我个人觉得下拉框可能会特别的合适...四:设计折线图 有了2019年的月度数据抽取后,我们需要对抽取的数据做数据图表,这个很简单,只要选择你抽取的数据,插入折线图就可以了,接下来比较难的是我们怎么呈现和去年的数据对比。...我们选择了复选框复选框你选中它表示 TURE 你没选择他表示FALSE ?

2.7K31

iOS-屏幕适配实现(AutoLayout)

约束错误警告 红色箭头,代表约束错误,一般是缺少约束或约束冲突(例如375的屏幕宽度,你不能距离左边200,距离右边200,还要控件宽度100,肯定不行) 黄色箭头,代表约束警告,表示当前控件在xib中呈现的位置或者尺寸和程序运行后实际呈现的效果不一样...,导致约束警告的原因往往是没有更新控件的约束,但并不影响其真实效果,也不会报错 注意:约束有错误,不代表运行会错误,约束错误同样可以运行 约束的规则 相对于父视图的约束,添加到父视图上 对于两个同层级...所以添加特征变量是影响一类设备 Interface Style:亮色或暗色的界面风格 orientation:设备方向 Vary for Traits :点击后会弹出选择Width、Height复选框...devices 通过选中height复选框,将显示varying 98 compact height devices 通过选中两个复选框,将显示varying...,横屏中view不见了,因为iPhone8的横屏布局是(wC hC),所以添加约束不会生效,要想适配的话,需要在布局是(wC hC)条件下,重新添加约束 一般组合有4种结果(wC hC)、(wR

34010

PyQt5编程基础 2.2 信号与槽函数-绑定组件事件

Bold复选框编写代码进入Qt Creator,为Bold复选框设置槽函数,选toggled(bool)记下函数名在myDialog.py文件的QmyDialog类里定义一个同名函数,并且具有相同类型的参数运行程序选择...Bold复选框可以看到里面字体加粗了取消Bold复选框字体没有加粗了Underline复选框编写代码在Qt Creator中为Underline复选框添加槽函数,选择clicked()在Ui_Dialog.py...默认情况下,connectSlotsByName只会关联默认的不带参数的clicked信号,不会关联带参数的clicked(bool)信号要解决这个问题,需要使用@pyqtSlot修饰符,将函数的参数类型声明清楚编写代码在...text改为Blue保存ui文件后,将e:\baikejia\bkj2-3\QtApp目录的Dialog.ui拷贝到e:\baikejia\bkj2-3下,覆盖原Dialog.ui文件记得要在Eric6下重新编译...form运行出错重新运行,发现报错这是因为重新编译了ui文件,导致ui_Dialog.py文件内容更新,刚才在里面放的do_setTextEdit被冲掉了。

29520

本地存储应用案例 ToDoList

点击待办事项复选框,就可以把当前数据添加到已完成事项里面。 点击已完成事项复选框,就可以把当前数据添加到待办事项里面。 但是本页面内容刷新页面不会丢失。...2、toDoList 分析 刷新页面不会丢失数据,因此需要用到本地存储 localStorage 核心思路: 不管按下回车,还是点击复选框,都是把本地存储的数据加载到页面中,这样保证刷新关闭页面不会丢失数据...data); console.log(data[0].title); 3、 按下回车把新数据添加到本地存储里面 切记: 页面中的数据,都要从本地存储里面获取,这样刷新页面不会丢失数据...       load(); ​   }) 6、正在进行和已完成选项操作 当我们点击了小的复选框,修改本地存储数据,再重新渲染数据列表。...修改对应数据属性 done 为当前复选框的checked状态。

2.3K20
领券