首页
学习
活动
专区
圈层
工具
发布

React 16.x折腾记 - (6) 基于React 16.x+ Antd 3.x封装的一个声明式的查询组件(实用强大)

, props的autoSearch为true 仅有一个非Input控件的时候,去除卡片效果 抽离思路及实现 思路 合并props传递的值,尽可能的减少传递的东西(在组件内部实现默认值合并),把渲染的子组件通过遍历...json去实现; 整个查询区域用的antd表单组件,聚合所有表单数据(自动双向绑定,设置默认值等); 为了降低复杂度,子组件不考虑dva来维护状态,纯靠props和state构建,然后统一把构建的表单数据向父级暴露...内部的state默认初始化都为空[antd对于日期控件使用null来置空],外部初始化可以用getFieldDecorator的initialValue,已经暴露 实现的功能 使用姿势 清除表单数据中字符串的两边的空格 // 若是key为空数组则跳过 removeNotNeedValue = obj => { // 判断必须为obj if (!....亦或filed的字段名或之值丢失则不渲染该组件 // 若是为select或cascader没有子组件数据也跳过 const { ctype,

75510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React 折腾记 - (6) 基于React 16.6 + Antd 3.10.7封装的一个声明式的查询组件

    ---- 抽离思路及实现 思路 合并props传递的值,尽可能的减少传递的东西(在组件内部实现默认值合并),把渲染的子组件通过遍历json去实现; 整个查询区域用的antd表单组件,聚合所有表单数据(自动双向绑定...,设置默认值等); 为了降低复杂度,子组件不考虑dva来维护状态,纯靠props和state构建,然后统一把构建的表单数据向父级暴露.....内部的state默认初始化都为空[antd对于日期控件使用null来置空],外部初始化可以用getFieldDecorator的initialValue,已经暴露 ---- 实现的功能 支持的props...根据ctype渲染的控件有Input,Button,Select,DatePicker,Cascader,Radio 允许传递的props有三个,所有props均有默认值,传递的会合并进去 data:....亦或filed的字段名或之值丢失则不渲染该组件 // 若是为select或cascader没有子组件数据也跳过 const { ctype,

    3K10

    react hook+ts+rouerV6 dev notes

    1.React useHistory 更新为useNavigate如何传值 路由组件如何传值 1.组件跳转并传值 (1)导入 import { useNavigate } from ‘react-router-dom...’; (2)使用 const navigate = useNavigate(); 点击事件中使用  组件“/machine”为已经定义好的路由,state负责传值state:{参数:值}     navigate...) 首先独立封装一个antd的dialog import React, { useState } from 'react'; import { Modal, Button } from 'antd';...创建一个ref  const formRef: any = React.createRef() 挂载到form上(我的组件是通过子组件传值过去的) 传递给子组件  的值(封装了thunk) 跟class的写法一样(前提是封装thunk) 先引用: import { connect } from 'react-redux' 然后使用: function

    2.8K10

    你不容错过的babel-plugin-import史上最全源码详解!

    组件名 } 结构 } else { pluginState.libraryObjs[spec.local.name] = true;// 名称空间引入或默认引入的值设置为...... } ImportDeclaration 会对 import 中的依赖字段进行收集,如果是名称空间引入或者是默认引入就设置为 { 别名 :true },解构导入就设置为 { 别名 :组件名 } 。...因为这两处表示的意义是不同的,CallExpression 节点的情况有两种: 刚才已经分析过了,这第一种情况是 JSX 代码经过转换后的 React.createElement 我们使用函数调用一类的操作代码的...因为 customName 修改是以 transformedMethodName 值作为基础并将其传递给插件使用者,如此设计就可以更精确的匹配到需要按需加载的路径。...设置为 false,之后便利用 @babel/helper-module-imports 生成新的 import 节点,最后**函数的返回值就是新 import 节点的 default Identifier

    3.1K20

    前端自动化测试

    前言 本文主要是介绍基于React+Ant Design(以下用Antd表示Ant Design)的项目,在对于自己封装的,或者基于Antd封装的公共组件的自动化测试技术的选型和实践。...,改出BUG 一个组件多个页面复用,修改后的测试回归任务重 技术选型 目前前端整体的测试框架较为常用的有: Jest Mocha Jest 源自Facebook,Jest 的一个理念是提供一套完整集成的...操作变得十分友好 综合目前市面上的轮子,我们技术选型为Jest+Enzyme 实践 例子是一个基于Antd二次封装的单选年的日期选择器,如下演示: 图片 代码结构如下 图片 其中测试相关的文件,...: 设置props setState: 设置state props(key): 用于检索组件的props state(key): 用于检索组件的state 具体的写法,index.test.js文件内容如下...即检查输入框的值是否为默认值 测试清除按钮是否可用,通过模拟点击清除按钮,测试是否能按照预期清除输入框内填充的默认值 测试设置值,点击输入框,弹出选择框,选择值,检查输入框中的值是否为选择的值

    2.6K20

    年度实用技巧 | 越折腾越有趣,封装了一个表单组件

    (✧◡✧)基于React框架开发,使用的antd UI组件库。整体设计功能介绍antd提供的Form表单控件,已经集成了数据录入、校验以及对应样式等。...数字类型的输入框的特别之处在于输入的数值可以设置最小值和最大值、小数点、每次可以改变的步数。这些都可以通过设置对应的属性进行控制。数字类型的输入框支持展示单位,通过unit变量控制单位的展示。...(灵感就是这么一瞬间就来了)select下拉选择器类型使用的antd提供的Select组件。...下拉选择器操作一般获取的是value,如果需要拿到选中的节点文本 label,通过onChange时间设置option变量的值为选择的下拉项的值。...textAreaContent(item.textArea) : null}checkbox多选框类型使用的antd提供的Checkbox组件。radio单选框类型使用的antd提供的Radio组件。

    58820

    Ant Design的DatePicker日期组件不可选日期实现,让New Bing优化代码太棒了

    antd(Ant Design)是一个基于 React 的UI组件库,它提供了丰富的组件和设计规范,可以帮助开发者快速构建高质量的前端应用。...本文将介绍如何使用 antd 的 DatePicker 组件设置不可选日期:根据 antd 官方示例实现后,让 New Bing 新必应优化代码,结果让我很惊喜。...Moment.js 的库,参考 antd 官方示例,代码如下:需要设置 begin 前和 end 后的日期不可选 import React, { useState } from 'react'; import...format 属性的值,使用了 date.format 方法来格式化日期。...总结 本文介绍了如何使用 antd 的 DatePicker 组件设置不可选日期,以及如何自定义日期格式。

    3.9K20

    Ant Design 4.0 发布,来看看如何升级?

    如果你仍在使用 React 15,请参考React 16 升级文档 其余 React 16 废弃生命周期 API 请参考 迁移导引 4.0 有哪些不兼容的变化 设计规范调整 行高从 1.5(21px)...Tabs 火柴棍样式缩短为和文字等长。 兼容性调整 IE 最低支持版本为 IE 11。 React 最低支持版本为 React 16.9,部分组件开始使用 hooks 进行重构。...移除了 Select 的 combobox 模式,请使用 AutoComplete 替代。 图标升级 在 antd@3.9.0 中,我们引入了 svg 图标(为何使用 svg 图标?)。...Button 的 danger 现在作为一个属性而不是按钮类型。 Input、Select 的 value 为 undefined 时改为非受控状态。...用新的 @ant-design/icons 替换字符串类型的 icon 属性值 import { Avatar, Button, Result } from 'antd'; + import { QuestionOutlined

    6.6K10

    「前端组件化」以Antd为例,快速打通UI组件开发的任督二脉

    ,通过设置value的值进行数据回显等;最后去思考这些参数怎么实现具体的功能,就比较容易想清楚了。...2.栅格的占位格数,也是它的宽度,样式实现时使用百分比,比如span的值为6时,24等分之后,它的百分比是25%。....rc-steps我在看Antd的源码时发现,有些组件底层用的第三方react-component中的组件。当然这个组件库也是属于Antd的。...我带着这些功能是怎样实现的好奇心,研究了Antd的源码。内容有点多,我挑基础的部分讲一讲。rc-tableTable组件,底层主要使用react-component中的table组件。...其中单元格的标签会根据传入的component的值不同,使用不同的标签,默认为td,表头thead传入的为tr。

    2.8K10

    react模态框表单总结

    antd的表单操作比较细致,功能较多,我们工作中常用的无非增加内容的表单和编辑的表单,增加内容的表单初始化时,大部分默认值为null的装填,偶尔有一些需要设置初始值,如性别或者一些必选属性。...编辑表单需要获取原来的内容然后初始化,react框架一般会有两种模式来初始化:一种是绑定form值,初始化一个filed类似const [form] = Form.useForm();然后将这个值绑定到...antd中提供了第二种模式,我们可以使用initvalue设置初始值,此时表单初始化时会根据这个值来初始化表单,所有初始化的操作都是根据这个值。...antd的框架特性在formitem上设置rules来做校检,并且显示提示信息。...表单如果是放在模态框中的,那么当模态框显示时,需要得到要显示的数据,或者要确定是那一条数据,一般情况下我会再当前组件设置一个currentData来指代当前数据,并将其传入模态框,并且将visibale

    43310

    React Echarts 使用教程 - 如何在 React 中加入图表(内附数据看板实战搭建案例)

    如何在 React 里引入 Echarts 首先,我们需要初始化 React 项目,这里使用 create-react-app 即可轻松完成,以下两个命令都可以,是等价的: yarn create react-app...kalacloud-react-echarts // OR create-react-app kalacloud-react-echarts [kalacloud-卡拉云-低代码平台] 初始化成功后...首先,我们需要安装 antd 作为项目的 UI 框架,然后还需要安装 axios 来发送请求获取数据,还需要 dayjs 方便我们处理日期: yarn add antd axios dayjs 安装成功后...,在 index.js 导入 antd 的 样式文件 import "antd/dist/antd.min.css" 接下来就可以正式进入开发了,首先说明下我们要做的事情: 封装工具类,用来处理公共请求...还有最后一步,就是使用这个趋势图组件,修改 App.js 如下: import { Row, Col, Select, Form } from "antd"; import { useState }

    7K20

    这样入门 js 抽象语法树(AST),从此我来到了一个新世界

    比如上图中,我们想要修改 1 为 2 ,我们通过某个工具去找到这个 AST 中的 type 为 Literal 这个节点,将其 value 设为 2 ,再转换为 js 代码就实现了这个需求。...你能看到最后一行我们执行了 toSource() ,该方法就是将 AST 转回为我们的源码,控制台打印如下: import React from "react"; import { Select, Input...}); console.log(root.toSource()); 上面代码首先仍然是找到 antd 那行,然后在 specifiers 这个数组的最后一位添加一个新的节点,表现在转换后的 js...代码上就是,新增了一个 Select 的引入: import React from "react"; import { Button, Input, Select } from "antd"; //...读写文件 拿到文件路径 files 后,需要 node 原生模块 fs 来帮助我们读写文件,这部分代码很简单,思路就是:读 js 文件,将文件内容转换为 AST 做节点值替换,再转为 js 代码,最后写回该文件

    2.4K21

    实现一个简单的表单校验器

    问题提出: 最近笔者在用React+antd做管理后台系统需求的时候,碰到了一个问题,就是在同一个antd的FormItem下面有多个子数据,那么在表单校验的时候某个数据一旦出错,整个FormItem下面的表单组件都会标红...validator: (value, values, callback) { // value为该字段的值 // values为该字段的父字段的值。...如果value是userInfo.name的值, 那么values就是userInfo // callback()时候为校验成功,callback('some error msg') 为检验失败...,errorRecord是个全局变量,这里不是通过高阶组件的setState来更新视图的,后面会讲到校验后如何触发视图更新。...这里我没有自己写的样式,是直接用的antd表单校验的样式。

    1.2K10

    让你 React 组件水平暴增的 5 个技巧

    然后把 style、className,额外的 props 都设置给最外层的 div。 这样,使用这个组件的时候,就可以自己定义一些样式,设置一些 props。...useCallback 是只有 deps 数组变化的时候才返回第一个函数的值,可以保证 props 不变来用来避免不必要的渲染 用 Context 来跨组件传递值 antd 里很多配置的传递都是通过 Context...比如 disabled 的设置: 通过 React.createContext 创建 context 对象,通过 Provider 修改 context 的值。...除了用来传递配置外,很多组件也依赖 Context 来传递一些值,比如 Form: 在 Form 组件里设置 form 对象,然后 setFieldValue 设置字段值。...很明显,这里也是用 Context 来传递的: antd 会创建这样一个 context 对象: 然后在外层用 Provider 设置 context 值: 也就是我们这里传的 form: 那 Form.Item

    94310

    Hooks + TS 搭建一个任务管理系统(一)-- 登录注册页面

    props 参数,因此我们不需要显式的去使用 props 我们可以直接在参数列表中解构出来,这样我们整个项目开发完成都不会见到一个 props 二、通过 Antd 布局页面 关于布局方面采用的是 flex...组件添加样式,我们只需要用 styled(组件名) 即可 对于登录和注册页面,采用的是 Antd 中的 Form 表单实现的,在控制好盒子大小后,基本不需要过多的布局 <Form onFinish={...promise 对象,如果不是则直接抛出错误 当进入 run 函数后,我们需要将 stat 状态置为 loading 状态,这样我们可以通过这个值来实现请求 loading 的效果, 最后我们返回一个...value 设置的就是它的 context 容器中的值 通过编写这个 custom hook 我们对 useAsync 有了更好的理解,同时也学会了如何使用 context 来进行数据的共享 六、按钮触发函数执行...返回函数时,需要使用 useCallback 包裹 多利用解构赋值,来优化代码 useState 设置的变量,类型会跟随初始值的类型 对于不同的事务,我们最好能分离出来写,这样我们的主文件思路会非常清晰

    1.7K11

    React?设计模式?

    通常在向不同域发出请求时使用,确保发送任何相关的身份验证 cookie。 「mode: "cors"」: 这为请求设置了 CORS(跨域资源共享)模式。...「组件卸载时的资源清理」:在 React 或其他前端框架中,可以在组件卸载时使用 AbortController 来中止未完成的请求,防止在组件销毁后仍然更新组件状态。...在这些情况下,容器和展示模式非常适用,因为它可以将组件分类为两种: 容器组件,负责数据获取或计算。 展示组件,负责在用户界面上呈现获取的数据或计算的值。...下面展示了,如何使用 React 实现一个简单的 PostList 组件,它会从后端获取 posts 列表,并将其渲染到页面上。...这种模式的原则是将父组件分解为较小的组件,然后使用 props、context 或其他 React 数据管理技术来管理这些较小组件之间的交互。

    1.1K10
    领券