全文共2003字,预计学习时长9分钟

图源:unsplash

编辑 搜图或许你一直在从头开始构建React应用程序,这当然无可厚非。但当你遇见了今天要介绍的这些库,一定会感叹相见恨晚!

React最令人喜爱的地方是,没有固定的方法来构建应用程序。开发人员可以自由选择要使用的库和要遵循的模式,你可以随意去实现自己天马行空的想法。

在这里所创建的大多数应用程序,无论是用于工作还是个人项目,都是从相同的库开始的。

利用React社区,你不必再耗时另起炉灶,可以花更多的时间为用户提供价值。

所以千万不要错过呀~

1. Formik

面对现实吧,几乎所有的网络应用程序都有表单,这是一件很棘手的事情。

对于用户来说,没有什么比表单不能正常工作,或在错误验证后重置,再次输入所有信息更让人沮丧的了。表单正确,是网络应用程序中让用户拥有良好体验的关键。

图源:unsplash

那就意味着:

· 表单字段应具有客户端验证。

· 字段在用户“触摸”或表单提交之前不应显示错误。

· 无效提交时,表单状态不应为“丢失”或“重置”。

· 提交后,表单应该进行异步(服务器端)验证。

自己编写一个处理所有这些事情的组件是相当复杂的。需要跟踪所有表单值,以及所有表单字段的“触摸”状态,甚至包括 “错误”。

此外,还需要构建表单提交的逻辑。这些都需要足够通用,以便在整个应用程序中重用。没有人想在登录表单、注册表单、地址表单等等中一遍遍重复它。

所以,使用React社区的一个流行库,是比自己构建更好的选择。

Formik是JaredPalmer开发的一个库,在这里,表单编写变得轻而易举。

2. 测试库

测试省了很多时间。当笔者创建一个复杂的特性或组件时,总是在设计、产品和开发之间“游荡”。设计师可能会要求进行视觉或UX更改,产品部门可能要求更改UX。笔者只得不断地反复、重构和更新组件。

通过确保组件或特性的正确测试,可以确保这种重构不会允许回归潜入代码库。它节省了大量的人工测试时间,这给了人们更多信心。

图源:unsplash

涉及到测试React应用程序时,有一个黄金标准:testing-library/react,也称为react-testing-library。它已经内置在create-react-app中,所以入门就变得很简单啦。

使用testing-library,可以从用户的角度测试组件。

什么意思?下面用一个实际的例子来说明。

在这个示例中,笔者为一个简单的注册表单编写了一个测试。它要求用户提供姓名、电子邮件和密码。这些都是必填字段,如果省略了任何一项,那么表单应该在提交时显示一个错误。

import {render, fireEvent } from "@testing-library/react";import userEvent from "@testing-library/user-event";import { SignupForm } from "./Form";describe("SignupForm",() => {  it("should show an error whenpassword is omitted", () => {    const rendered =render();    const nameInput =rendered.queryByLabelText("Name");    userEvent.type(nameInput, "JohnSmith");    const emailInput =rendered.queryByLabelText("Email");    userEventtype(emailInput, "john@smith.net");    const submitButton =rendered.queryByText("Submit");    userEvent.click(submitButton);    expect(      rendered.queryByText("Pleaseinput your password")    ).toBeInTheDocument();  });});

如你所见,首先使用react-testing-library呈现注册表单。

之后输入姓名与邮箱。

之后点击提交。

最后,出现了“请输入您的密码”。

这个测试中的一切都基于用户如何与表单交互。可以重构表单以使用不同的输入,将其拆分成多个react组件,所有这些都不会破坏测试。

3. CSS-Modules和Classnames

图源:unsplash

当笔者开始一个新的React项目时,通常会选择CSS-Modules。create-react-app中内置了支持,很容易上手。

当然,可以通过遵循BEM来避免依赖,但是需要学习如何使用BEM。CSS-Modules提供了可预测的、范围有限的、清晰的CSS。

笔者喜欢将classnames和CSS-Modules一起使用。先看下面这段代码:

constclassName = 'button ' + props.hasError ? 'error' : '';return ( );

有了classnames,可以进行简化,然后变成这样:

constButton = props => (  );

甚至可以将它与CSS-Modules相结合:

importstyles from './Button.module.css';const Button = props => (  );

有作用域,易于编写CSS,就问你香不香!

4. Downshift

也许你会问,为什么要使用外部库来创建像下拉列表或选择输入这样简单的东西呢?

构建一个基于鼠标单击打开或关闭的组件确实非常简单。但与许多前端任务一样,困难的不仅仅是构建组件。

创建一个大量依赖屏幕阅读器的互联网用户可访问和可用的下拉列表不简单,让它在keyboardusers中正常工作并非易事。

这就是笔者喜欢使用downshift的原因。它具有这样的可访问性,并可自行选择其他的功能与形式。

图源:unsplash

当笔者开始一个新的React应用程序时,总会安装这些库,省时省力,岂不美哉?

Formik能更快编写漂亮的表单。

测试库 有助于编写耐用的集成测试,为应用程序提供信心。

CSS Modules 和 classnames 用于编写有作用域的CSS。

Downshift 可以创建可访问的组合框和选择输入,而无需覆盖默认样式。

这样的神器,你值得拥有!

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规

react 表单设计器_神器:让你相见恨晚的5个React应用程序库相关推荐

  1. activiti表单设计器_基于Vue,ElementUI开发的一款表单设计器

    介绍 基于Vue,ElementUI开发的一款表单设计器,提高表单开发效率的利器,让开发者从枯燥的表单代码编写中解放出来 工具地址: http://tools.xiaoyaoji.cn/form Gi ...

  2. js 表单设计器_准备迎接Vue3,使用Vue Composition API生成干净可扩展的表单

    表单是前端开发中最棘手的部分之一,您可能会在其中发现很多混乱的代码. Vue.js 2之类的基于组件的框架在提高前端代码的可伸缩性方面做了很多工作,但是形式问题仍然存在. 在本教程中,我将向您展示新的 ...

  3. python开源报表系统_流程设计器、表单设计器和简单报表管理开源OA系统smart-web...

    smart-web2是一套相对简单的OA系统:包含了流程设计器,表单设计器,权限管理,简单报表管理等功能: 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuer ...

  4. 基于Ant Design和jQuery UI的表单设计器

    基于Ant Design 和jQuery UI 的表单设计器 GitHub 地址 概念 Comonent 组件 Layout 布局,一种特殊的Component Component Editor 组件 ...

  5. html5拖拽表单设计器,require+jquery+backbone实现拖拽式报表设计器-拖拽式表单设计器...

    HTML我帮您-拖拽式报表设计器-拖拽式表单设计器是一个可视化设计器,基于require+jquery+backbone+underscore+bootstrap实现的表单设计器.思想来源于 Layo ...

  6. 几款常用的表单设计器解决方案

    在日常前端开发中,表单可以说是最常用的一种数据录入及展示组件.如果项目里有成百上千个表单需要手动编写代码,这将极大的一笔极大的人力开支.这时候,选择一款合适的表单设计器,就显得非常重要了,不仅能极大的 ...

  7. 多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单

    本文完整版:<多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单> Vue 表单设计器 form-generator - 适配 Element Plus UI 框架的表单设计器 f ...

  8. 开源推荐:国内3大主流前端UI表单设计器,千万不要让领导知道

    互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习. 偷得浮生半日闲,自古人生何其乐.开始之前告诉一下大家,距离国庆8天假只剩4天了,先乐呵乐呵. ...

  9. .net erp(办公oa)开发平台架构概要说明之表单设计器

    2019独角兽企业重金招聘Python工程师标准>>> 背景:搭建一个适合公司erp业务的开发平台. 架构概要图: 表单设计开发部署示例图   表单设计开发部署示例说明 1)每个开发 ...

  10. 使用开源的驰骋表单设计器设计表单案例演示

    我们以客户提供如下原始的word表单样本,使用驰骋表单设计器制作表单的过程介绍如下: 工业设计和创意需求登记表原始表单图 在ccform表单设计器中,设计如下: 驰骋表单设计器,设计表单所见既所得,操 ...

最新文章

  1. beautifulsoup里面的find()和findall()小代码测试
  2. k8s redis集群_基于K8S部署redis哨兵集群
  3. 关于instancetype代替id的使用区别
  4. 利用geogle中memory工具分析js占用内存
  5. 我有单片机,你有酒吗?
  6. eclipse下拉框里的选项怎么鼠标单击表判断_领导让我预测下一年销量,怎么办?...
  7. 如何实现二次抛异常时保存第一次异常的详细信息?
  8. MySQL二进制日志文件的用法_数据恢复
  9. 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
  10. 无需人工!无需训练!构建知识图谱 BERT一下就行了!
  11. React Native (一) react-native-video实现音乐播放器和进度条的功能
  12. 2019年Java Web学习笔记目录
  13. Linux命令参数详细解析 mv
  14. hive、hadoop面试题
  15. SAP中检验计划创建晚于检验批导致无法质检的问题分析处理
  16. inline详细讲解【C语言】
  17. 2021-11-09 jQuery常用方法及事件
  18. LoRaWAN节点和网关接入阿里LinkWAN
  19. 【程序员玩基金】基金基础知识
  20. FileUploadException: Stream closed

热门文章

  1. C语言 数组和指针
  2. SWUST OJ Coin Changing
  3. 【自然框架】之通用权限(三):组织结构表组
  4. SPI机制入门、SPI机制原理
  5. Bean的生命周期简单过程
  6. luncence学习
  7. 市场监管总局通报部分转供电主体不执行国家电价政策案例
  8. Android中注册一个 BroadcastReceiver的代码
  9. nginx 缓存机制
  10. mysql数据库管理工具navicat for mysql怎么用