先说一下写着篇文章的契机,是因为回显,复杂表单的回显,让我觉得我对initialValue这个属性是有误解的。...一、initialValue的出处和定义 initialValue的出处: AntDesign/Form表单件/getFieldDecorator(id,options)装饰器函数/第二个参数options...用户手动更新表单数据,比如在组件中手动输入,在组件中手动选择等等,在用户手动更新数据之后,initialValue的值改变不会更新表单值。 2....下面的例子中在生命周期函数componentDidMount中执行了setFieldsValue方法,其他不变,你会发现不管怎么点击“重新获取数据按钮”,城市对应的值都不会被更新,而总量对应的值却一直在更新...数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据
大家好,又见面了,我是你们的朋友全栈君。 在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品。...最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加进去。一来更方便,二来加长了左部导航栏的长度使页面更协调。...原有的分类导航栏是由Repeater实现的,现在需要在每一个分类下加入该类的商品信息,于是我想到了在原有Repeater中嵌套Repeater。...--分类下的产品--> 后台代码部分(部分代码): //在绑定分类品名时
背景 “在中后台业务中,表单页面基础的场景包括组件值的收集、校验和更新。...在 to B 业务中,表单页面的需求往往更复杂和定制化,除了上述的基本操作,还要处理包括自定义表单组件、表单联动、表单的异步检验等复杂场景,在一些大型表单页面中还要考虑性能的问题,表单页面的需求往往是新同学摔得第一个跤...20191210141722 Render 阶段 被 Form 管理的组件,需要使用 props.form.getFieldDecorator 来包装,在 Render 阶段需要调用 getFieldDecorator...在子组件 Render 的执行过程中, getFieldDecorator 方法从 fieldStore 中读取实时的表单数据以及校验信息,并通过注入 value 或者 valuePropName 的值设定的属性来更新表单...嵌套数据结构收集 FieldStore 内部集成了 lodash/set,可以设置对象路径(eg: a.b.c 或者 a.b[0])为字段值,通过使用对象路径字段,我们可以很方便的实现嵌套数据结构值的收集
本文适合React、Vue开发者阅读,10分钟不够?那就再加10分钟。 被人诟病的Form antd被人吐槽最多的除了彩蛋之外,那应该就是Form表单了。...写这篇文章不是为了吐槽Form表单,当然我也并没有更好的优化Form表单的方案,本文的目的是希望大家能够通过本文了解Form表单的本质,更好的使用的Form表单。...Vue版Form的进化史 起初我们使用了和React版一致的写法,必须使用Form.create包裹组件,但vue推崇的template语法很难再去使用,你不得不去在Vue中使用JSX,遭到了用户的各种吐槽...,但是我不想让组件嵌套太深,所以我们还是使用a-form-item进行劫持组件,为了能够区分需要劫持的哪些组件,我们使用指令进行标记并传值, 之所以使用指令是因为我们不应该为一个需要注册的组件传递一个不相关的属性...举一个很简单也很常见的栗子: 在系统中同一份数据被多处组件(包含可编辑的Form)使用是常有的事情,我们在表单中改变这份数据,同时数据的改变同步到各个相关组件中,非常easy的完成了需求。
响应式表单 FormControl 的 valueChanges 属性和 statusChanges 属性包含了会发出变更事件的可观察对象。...,只需要在pipe添加相应的运算符。...比如这里在结果里追加上次更新时间,字段名为lastTime this.form.valueChanges .pipe( filter(() => this.form.valid...return data }) ) .subscribe(res => console.log(res)); 另一种写法,监听各个元素 // 如果要监听单个表单元素...,再输出成一个值 // 这个有个问题是只有合并的元素都产生值才会输出内容,所以在上面使用startWith赋初始化值 combineLatest(username$, status$)
这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求。...主要介绍 Form 表单的创建和 Form表单双向绑定(getFieldDecorator)。 后文中所提到的 Form 表单均为 Antd 3.x 中的 Form 组件,以下简称为 Form 表单。...createBaseForm 方法,这个方法起到装饰器的作用,在 props 中包装了一个默认为 form 的变量,在这个变量中完成 Form 的所有功能。...1.3 validateFields 通常使用 validateFields 方法对我们的表单数据进行校验,查看 createBaseForm.js 文件中 validateFields 方法的实现后,...props.form 中,供开发者调用; 2、通过 getFieldDecorator 初始化表单的属性和值,达到双向绑定的效果; 3、校验通过,把数据存到 fieldsStore 中;校验不通过,
但是我们可能会忽略掉在这些优秀的第三方库中的某些组件可能也依赖于其他优秀的库!正如我们使用频率很高的 Ant Design 中的 Form 组件(这里我说的是 React 版本的)。...浅析内部实现 我们就先从最初的的渲染表单的逻辑开始,我们业务场景中用到的表单组件都会使用 getFieldDecorator 包装一下。...,以传入的 name 为索引 key,支持嵌套、存储表单数据, 即配置信息不涉及值的问题,主要包括: name 字段的名称 originalProps 被 getFieldDecorator( ) 装饰的组件的原始...,如果用户没有设置 trigger 和 valuePropName 则使用默认值,随后调用 fieldsStore 中的getFieldMeta 方法,fieldsStore 实例对象在整个过程中尤为关键...在更新组件后,触发 render 方法,接着又回到一开始 getFieldDecorator 中获取 fieldStore 内的值,返回被修改后的组件。
最近在维护公司的中台erp系统,项目中js库用的是react,ui库用的是antd。平时还是喜欢自己写css,刚开始还是有点不太习惯直接上ui库做项目,觉得用antd还是挺恶心的,主要是form。...在熟悉了以后发现这个库真棒。 react缺少类似vue的v-model这样的双向绑定机制, 所以在做表单的时候需要手动监听keyup,input,blur这一类的事件,会显得稍微麻烦一些。...antd官网 双向绑定:getFieldDecorator 用法:该方法用在表单的子域里面,通过this.props.form.getFieldDecorator(id, options)进行使用,其中...校验方法会校验在双向绑定getFieldDecorator中定义必填项required为true的所有字段 form.validateFields((err,value) => { if...() 提交数据 这个类似于,通过使用form的onSubmit事件,在提交的button上进行 用法如下 <Form labelCol={{ span: 5 }} wrapperCol={{ span:
这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求。...主要介绍 Form 表单的创建和 Form表单双向绑定(getFieldDecorator)。...后文中所提到的 Form 表单均为 Antd 3.x 中的 Form 组件,以下简称为 Form 表单。...1.3 validateFields 通常使用 validateFields 方法对我们的表单数据进行校验,查看 createBaseForm.js 文件中 validateFields 方法的实现后,...props.form 中,供开发者调用; 2、通过 getFieldDecorator 初始化表单的属性和值,达到双向绑定的效果; 3、校验通过,把数据存到 fieldsStore 中;校验不通过,把
在form表单中自定义封装一个input组件 如果不做处理 form表单提交时是获取不到这个自定义组件的数据的 这个坑对于新手来说 真的是个大坑 特别是对表单内的元素做提交不是很了解的人 用ant的ui...框架来说明吧 一个基础的表单 // ant表单组件 import { Form, Select, Input, Button } from 'antd'; const FormItem = Form.Item...并渲染到子元素Option里 那么我们就需要从新封装自定义这个原生的Select组件 // 把Select单独提取出来 import React, { Component } from 'react.../services/initialApi'; // 封装的后端接口请求 class SelectForm extends React.Component { constructor(props)...表单里 // 修改后的ant表单组件 import { Form, Select, Input, Button } from 'antd'; import SelectForm from '.
React Native中的iconfont 关于在React Native中使用iconfont,网上已有很多非常好的解决方案,用的最多的就是react-native-vector-icons , 这个库支持很多常用的...IconFont的使用原理 其实IconFont就是一些文字,通过在web上的使用,我们可以大概猜出使用方法: 指定字体集 把对应的16进制码当成文字写到文本中 在React Native中同样如此,我们可以通过...实际上,一个字体通常由数个表(table)构成,字体的信息存储在表中。...这里最好给每个icon定一个易于理解的名字,可以使用http://font.baidu.com/editor 使用自定义的IconFont 有了上面的摸索,要支持自己的IconFont并不难。...tag-svip:{icon('tag-svip')} ) } } 另外,在工程中
本文的重点为 Form 表单的校验及在数栈中的应用,偏向于应用总结与心得分享。...关于 Form 表单的其他内容,在 Form 表单在数栈的应用(下) 会和大家见面。...二、什么是 Form 相信大家在日常开发中已经对 Form 表单的使用已非常精通了,但非常值得一提的是,可能大家对“Form的定义是什么?什么时候我们会选择用 form ?”这个问题却往往回答不好。...首先是存在多层 form 嵌套的问题,也就是说同一个页面里可能还包含或嵌入多个 form 表单,类似问题的核心就在于如何在一个页面中拿到当前容器的 form 实例和嵌套的 form 示例。...5. table 与 form 的碰撞 (组件联动校验) 业务场景:数栈中其实存在各种与 form 联动的案例,笔者取 数据资产 (data-assets-front) 项目为例,在 table 中动态插入单条数据并实现可自定义校验内容
表单数据形式配置化设计 https://www.zoo.team/article/form-data 前言 在日常的中后台系统开发中,表单是和我们打交道非常多的名词。...但是在一般的表单实现中、我们会做着很多重复的工作,不停在写 FormItem......// 配置化的实现 import React from 'react'; import { renderDataForm } from 'src/util/renderDataForm'; const...,无论是在详情页中显示文本亦或是编辑页中的表单组件包裹的数据,其实本身所对应的都是同一个数据,只是展示形式不一样而已。...在这里我们暂时将数据的形式定为表单组件形式与文本形式。其实在实际的使用中,由于数据的收集形式不同,会出现第三种数据形式。
核心 antd3思想:使用HOC(高阶组件)包裹form表单,HOC组件中的state存储所有的value值,定义设置值和获取值的方法 缺点:动一发牵全身,一个value值改变,因为这是顶级状态,所以所有的子组件都会因父组件的重新...render而render,浪费了性能 antd4思想:使用Context 包裹form表单,自定义一个store类,存储所有的表单value值,定义设置值和获取值得方法,因为不是组件内部状态,需要自己定义更新函数...,在每个Form.Item中定义forceUpdate()强制更新函数,当我们setValue值得时候,根据name值判断出要更新的Form.Item,可以调用该Item的更新函数更新,相比ant3节约了性能..., 会被react使用并拦截,这要用到React.forwardRef api, 把当前ref暴露给子组件,在Form lib中导出前...context中的方法 import React, { Component } from 'react' import { FormContext } from '.
bug场景.png 小 H 发现表单确实无法提交,于是便在提交按钮的点击回调函数中打了断点想一探究竟,这一调试可把小 H 愁坏了:validateFields 的回调函数中存在 D 字段的必填校验错误。...首先,从提交按钮点击回调的调试中我们发现,C 字段的值在我们从 A1 切换到 A2 后会正常消失,而且 C 的校验函数在提交时也并不会被执行。为什么 C 会消失,而 D 不会?...不信邪的小 H 打开了官网,查到: “自定义或第三方的表单控件,也可以与 Form 组件一起使用。...在注册字段时,我们通过 getFieldDecorator 方法将 props 传入自定义表单控件上,其中有就有一个属性 ref,而且入参是一个函数 saveRef。...以上所有的内容总结成一段话就是:在使用表单自定义控件时,如果使用的是函数式自定义组件,需要通过 forwardRef 支持 ref。
3.x 中,表单中任意一项的修改,都会导致 Form.create () 包裹的表单重新渲染,造成性能消耗; 在 4.x 中,Form.create () 不再使用。...在 4.x 中,不在需要 getFieldDecorator 对 Item 进行包裹。...注意以下问题: ・将之前写在 getFieldDecorator 中的 name/rules 等移到属性中; ・初始化在 form 中处理,避免同名字段冲突问题; ・关于表单联动的问题,官方提供了 shouldUpdate...通过这次 UI 升级和 antd 升级之后,Form 表单在数栈中的应用发生了较大的变化,从老版本的 label/component 横向排版改为了纵向改版,在横向空间不⾜的情况下,使⽤上下结构能有效提...antd3.0 的时候,我们采用 user.userName 能够读到嵌套的属性。
下面听我娓娓道来吧~ 一、简单的html ●● html是一门标记语言,它是由一堆嵌套的尖括号标签组成的。...html原生提供了很多标签用来表示各种控件,有按钮、链接、表格、段落、块、表单、下拉框、视频播放器等等。大部分标签还可以相互嵌套。...比如一个表单标签里面嵌套着输入框和按钮: 提交 如果想系统学习的话,可以到w3c...五、UI组件库 ●● 想必大家都听说过这几个专业名词:vue、react、element、antdesign等。...vue和react都是javascript框架,而element是基于vue构建出来的一套UI组件库,antdesign是基于react构建出的UI组件库。
笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用即可。...一、首先,是前端React页面代码,这类搜索框,一般都是放在Form表单当中,然后使用有前缀下拉框选项的Input组件,这类模式的组件是在Input组件当中实现一个addonBefore属性即可,如下代码...稍微解释一下这段代码,假如下拉框是以“学生姓名”为维度来搜索,那么表单的getFieldDecorator('condition')属性值即“name”,也就是values.condition==“name...在表单当中,输入框的属性label是getFieldDecorator('searchUser')。...Mybatis plus的ORM框架,可以直接使用lambda表达式的搜索条件进行,因为搜索条件搜索,故而,需要用like的模糊搜索,搜索条件是name+"%",没有两边都用"%",是因为若第一个模糊条件有索引的话
没有人喜欢创建和重新创建带有验证的复杂表单,包括React开发人员。 在React中构建表单时,必须使用一个表单库,该库提供了许多方便的工具,而且不需要太多代码。...让我们看看如何在你自己的项目中使用 React-hook-form 来为你的React应用程序构建丰富的、有特色的表单。 安装 让我们来讨论一个典型的用例:一个用户注册到我们的应用程序。...我们可以从 useForm 中获取一个 errors对象,而不仅仅是不提交表单。 就像我们在 onSubmit 中获得的数据函数一样,errors 包含对应于每个输入名称的属性,如果它有错误的话。...例如,在某些情况下,您希望它在onSubmit中创建一个不同的错误或清除一个错误,就可以使用这些方法。...总结 我希望本文向您展示了如何在React应用程序中更容易地创建功能性表单。 还有很多与react-hook形式相关的特性我没有在这里介绍。点击这里,官方文档应该涵盖你能想到的任何用例。