如何使用 Ant Design 创建问卷类型表单?

2023-11-30

Ant Design 提供了一个动态表单项,通过使用它,我可以添加和删除多个字段。但现在我想嵌套其中,即我想创建一个类似调查表的表单,在其中我想添加多个问题及其各自的答案。

目前,当我添加问题时,它工作正常,但当我添加一个问题的答案时,它也会添加到所有问题中。

添加和删​​除问题和答案的功能如下:

remove = k => {
    const { form } = this.props;
    // can use data-binding to get
    const keys = form.getFieldValue("keys");
    // We need at least one passenger
    if (keys.length === 1) {
      return;
    }

    // can use data-binding to set
    form.setFieldsValue({
      keys: keys.filter(key => key !== k)
    });
  };

  add = () => {
    const { form } = this.props;
    // can use data-binding to get
    const keys = form.getFieldValue("keys");
    const nextKeys = keys.concat(uuid);
    uuid++;
    // can use data-binding to set
    // important! notify form to detect changes
    form.setFieldsValue({
      keys: nextKeys
    });
  };

  remove1 = k1 => {
    const { form } = this.props;
    // can use data-binding to get
    const keys1 = form.getFieldValue("keys1");
    // We need at least one passenger
    if (keys1.length === 1) {
      return;
    }

    // can use data-binding to set
    form.setFieldsValue({
      keys: keys1.filter(key1 => key1 !== k1)
    });
  };

  add1 = () => {
    const { form } = this.props;
    // can use data-binding to get
    const keys1 = form.getFieldValue("keys1");
    const nextKeys1 = keys1.concat(uuid1);
    uuid1++;
    // can use data-binding to set
    // important! notify form to detect changes
    form.setFieldsValue({
      keys1: nextKeys1
    });
  };

I have 在codesandbox.io上创建了一个演示.


问题不在于函数,而在于 getFieldDecorator:

<FormItem>
     {getFieldDecorator(`answer[${k}]`, {
         validate: [
         ...
         ]
         })(<Input type="" placeholder=" Enter Answer" />)

您为所有输入提交相同的输入值。

如果没有装饰器,它可以正常工作,您可以对自定义函数进行验证并调用它

 <FormItem>
     <Input 
         type="" 
         placeholder=" Enter Answer" 
         // value={this.state.answer}
         // onChange={e => this.handleChange(e)} 
      />
 </FormItem>

UPD:添加了完整的代码 -沙盒尝试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Ant Design 创建问卷类型表单? 的相关文章

  • Antd select 元素:如何禁用输入?

    我正在尝试使用模式 multiple 的选择元素 我希望禁用输入 这意味着用户只能在现有选项之间进行选择 而不能输入文本 我该怎么做呢 我的元素 import Select from antd import antd dist antd c
  • 保留对 React 状态变量的“引用”

    据我所知 Javascript 中没有指针 我有以下问题 但我想知道是否有一个解决方案让我无法解决 解决方案可能是普通的 Javascript 或者像 Context API 这样的 React js 钩子 useContext 或者更多
  • 为对象数组创建新属性时出现对象不可扩展错误

    我有一个需要扩展 javascript 数组的函数 包括一个名为的新属性selected export const initSelect data gt let newData data concat newData map item gt
  • 如何将react-alert与定义为ES6类的React组件一起使用

    我正在尝试使用https www npmjs com package react alert https www npmjs com package react alert在我的项目中 但是为声明为函数的 React 组件提供了示例 但我的
  • “成功”的 Netlify 表单提交未显示在仪表板中

    我有一个 create react app 应用程序部署到 Netlify 并且我正在使用反应网络化形式 https www npmjs com package react netlify form呈现我的表格 我的表单已在我的 Netli
  • 如何取消 ComponentWillUnmount 中的所有请求?

    根据docs https facebook github io react docs react component html componentwillunmount ComponentWillUnmount 能够取消请求 我有一个页面发
  • 为什么 React 组件会渲染两次?

    我已将调试器放置在组件的渲染中 并且看到它有时 如果不是大多数时间 运行两次 是因为第一次渲染是在组件接收任何道具之前吗 第二次是收到的时候 我认为组件会经历安装 接收道具 然后渲染的过程 或者它是否安装 渲染 检查道具 然后重新渲染 如果
  • React 中的静态方法

    我正在查看 React 文档并遇到了静态方法 我想知道它在什么样的场景下可能有用 但想不出有什么用 在 React 中构建组件时 是否存在静态方法有用的特定场景 defaultProps and propTypes是 React 组件的静态
  • React JS - 如何将 json 数据绑定到下拉列表

    我有一个 React JS 文件 我正在尝试将数据绑定到下拉列表 数据存储在以下测试 API json 文件中 https api myjson com bins okuxu https api myjson com bins okuxu
  • TinyMCE 输入以相反顺序写入

    我面临这个问题 每当我输入 TinyMCE 时 我的光标会自动向左移动 最终从右向左写入文本 它只发生在我部署的应用程序中 但如果我在我的机器上本地运行代码 同样可以正常工作 发生这种情况的任何可能原因 相同的屏幕截图 https i st
  • React.js this.props.data.map() 不是一个函数

    我正在搞乱反应并尝试解析和渲染 json 对象 现在 我只是使用硬编码对象设置它以进行测试 而不是从 ajax 调用中获取它
  • 等待在 nextjs 页面中加载 paypal 脚本

    我有这段代码应该呈现 PayPal 按钮 我在 componentDidMount 方法中加载 PayPal 按钮 componentDidMount paypal Buttons createOrder data actions gt r
  • 如何在 next.js 中使用 window.matchMedia 和样式组件主题?

    我有一个主题 const smartPhonePortrait 320 const theme isCompact typeof window undefined window matchMedia min width smartPhone
  • React - 基于计数的动态输入字段

    我想根据用户输入的计数创建文本字段 我查了很多相关问题 但找不到我想要的结果 例如 如果用户输入 5 作为输入 我想创建 5 个文本框来输入 5 个人的姓名和手机 我怎样才能实现这个目标 用于获取计数的 TextField
  • 需要将焦点放在react中的div上

    我有一个之前用 H1 标签包裹的文本 页面加载后 我需要专注于该文本 为了方便起见 我将它包装在 div 中 render const translate billing primaryContactSelection true this
  • React Ref 的 offsetheight,即使在加载内容后,对于玩笑测试用例也始终返回“0”

    我在用反应测试库 and jest 在 componentDidUpdate 中尝试获取 this testRef current offsetHeight 获取 offsetHeight 为0即使在内容加载后 我想要 DOM 的精确 of
  • useRef 和普通变量的区别

    我想知道这两个代码之间的区别 1 import React from react import ReactDOM from react dom function App const myref React useRef 0 2 import
  • React Native:uri 图像未显示在 Android 上,但显示在 iOS 模拟器上

    我正在开发一个反应本机应用程序 我正在从 API 获取一些图像并将它们显示为平面列表 问题是这些图像在iOS模拟器上但不显示Android模拟器 我已经设置了图像的宽度和高度 但问题仍然相同 这是下面的代码 成分
  • getFieldValue 或 Formik 中的类似内容

    有没有办法获取 formik 中单击处理程序内字段的值 您可以使用setFieldValue在那里 所以我假设 但在任何地方都找不到 Formik 应该有类似的东西来检索值
  • 在reactjs中停止超时?

    有没有办法可以杀死 摆脱 reactjs 中的超时 setTimeout function do something bind this 3000 通过某种点击或操作 我希望能够完全停止并结束超时 有没有办法做到这一点 谢谢 假设这种情况发

随机推荐

  • 利用浏览器缓存

    我有一个网站 当我使用 Google 插件检查页面速度时 我收到 利用浏览器缓存以下资源缺少缓存过期时间 搜索仅返回有关在 Apache 下使用 htaccess 的信息 但我的站点在 Windows 2003 Server 上以纯 HTM
  • URL.getHost() 的解析结果

    需要帮助解析 在我的代码中 我有一个返回 url getHost 的方法 但结果可能是 blarg com 有时也可能是dates blarg com 对于任何一种情况 或对于 xxx yyy ggg blarg com 我都想返回 bla
  • Android - 如何从 Firebase 检索按插入顺序排列的对象列表?

    我想要什么 我想从 Firebase 数据库中检索按插入顺序排列的对象列表 如何将对象添加到 Firebase 数据库中的列表 mRefUser push setValue new MessageItem mRefUser push set
  • 键盘上的 QuickType 栏

    大家可能都知道键盘上新的快速输入栏 在我的应用程序中 我在键盘上放置了一个自定义 TextView 栏 但因为快速输入栏 我的文本视图被隐藏了 我想知道 是否有任何属性或方法可以知道 QuickType Bar 是否打开 没有任何信息可以告
  • jsf页面和托管bean之间,为什么getter方法被调用两次

    我有一个 jsf 页面 其中的表单有一个输出文本 Outputtext 组件的值是从支持 bean 或托管 bean 调用的 我知道当我将其编码为 MyBean myString 时 Jsf 重命名它并调用 getMyString 方法 然
  • 如何处理数据库的并发更新?

    处理 SQL 数据库中的并发更新的常见方法是什么 考虑一个简单的 SQL 模式 未显示约束和默认值 例如 create table credits int id int creds int user id 目的是为用户存储某种信用 例如就像
  • 您的帐户已具有来自同一计算机的有效 iOS 分发证书

    我正在尝试从我的机 器创建 IPA 创建 IPA 时 我收到错误 您的帐户已具有有效的 iOS 分发证书 我创建了证书和配置文件 因此我的所有代码签名身份都在我的计算机上 我可以使用相同的证书在设备中运行该应用程序 但无法构建 ipa 文件
  • 在 iOS8 下使用 CGAffineTransform 旋转时 UIView 不调整大小

    我有一个 UIViewController 当设备旋转时 它只旋转其中的一些子视图 这在 iOS7 下工作正常 但在 iOS8 下就崩溃了 看起来UIView的边界是通过iOS8下的变换来调整的 这是出乎意料的 这是一些代码 interfa
  • Android 模拟器 - 没有互联网连接

    我知道有几个关于这个问题的帖子 但我相信我的问题有点不同 我的 Android 模拟器工作没有任何问题 使用 Eclipse 插件 我可以启动模拟器 运行应用程序 这些应用程序将能够连接到我的计算机互联网 然后我更新了 Android SD
  • 为什么 (ngModel) 不起作用?

    我已经运行示例应用程序来学习 Angular 2 在我的示例应用程序中 ngModel 不管用 但是当我删除方括号时 ngModel 屏幕正在加载 但双向绑定不起作用 我应该做些什么来制作 ngModel work 可能您的代码在模块中缺少
  • Docker 错误:无法访问 /dev/mem。尝试以 root 身份运行

    我有一个树莓派 并且在其中安装了docker 我制作了一个 python 脚本来读取其中的 gpio 状态 所以当我运行以下命令时 sudo docker run it device dev gpiomem app image 它运行完美并
  • 在 React JS 中使用react-draft-wysiwyg 下拉菜单不起作用

    我尝试使用react draft wysiwyg使用docs 一些图标显示但不起作用 block type font font size pickerColor 下拉菜单不起作用 例如 font size默认设置为16 但我无法更改它 im
  • 为什么用日历设置日期给我错误的日期

    我将日期设置为 2013 01 01 00 00 00 但日期显示为 Fri Feb 01 00 00 00 GMT 01 00 2013 Why Calendar calendar Calendar getInstance calenda
  • getAction() 只给出 ACTION_DOWN

    对于我正在编写的应用程序 我想在用户将手指离开屏幕后调用某个操作 我知道我需要检查 event getAction 是否为 ACTION UP 但我从 getAction 得到的只是 ACTION DOWN 我的代码如下所示 menu ne
  • 没有这样的文件或目录:无法执行,但对 ls、文件和制表符补全可见

    我正在亚马逊 lightail 实例上安装 flexnet 我刚刚将内容提取到 opt并尝试运行任何 lm 命令 和ls我可以看到我拥有所有权和执行权限 我可以跑file文件夹中的任何内容 它都会告诉我它是什么 但是当我尝试执行任何操作时
  • 为什么正则表达式要用正斜杠括起来

    我正在深入研究正则表达式 subject abcdef pattern def preg match pattern substr subject 3 matches PREG OFFSET CAPTURE print r matches
  • 我可以安全地删除 Xcode Derived 数据文件夹的内容吗?

    我的磁盘空间不足 并通过第三方实用程序检查到 Library Developer Xcode DerivedData 目录占用了大约 22GB 的磁盘空间 我搜索了 stackoverflow 并找到了这篇文章 如何安全地删除 Librar
  • 使用一次“plot”调用绘制多条曲线时的一个图例条目

    我正在通过使用一条曲线绘制几条曲线来创建一个网格plot调用为 import matplotlib pyplot as plt import numpy as np fig ax plt subplots x np array 0 1 0
  • 输入丢失src

    如果我使用以下没有 runat server 的代码 输入的 src 工作正常 并且我看到图像通过 div div
  • 如何使用 Ant Design 创建问卷类型表单?

    Ant Design 提供了一个动态表单项 通过使用它 我可以添加和删除多个字段 但现在我想嵌套其中 即我想创建一个类似调查表的表单 在其中我想添加多个问题及其各自的答案 目前 当我添加问题时 它工作正常 但当我添加一个问题的答案时 它也会