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

为什么setCustomValidity()不能在React应用中工作?

setCustomValidity()是HTML5中的一个方法,用于设置表单元素的自定义验证消息。它通常用于在表单提交之前验证用户输入的数据。

在React应用中,setCustomValidity()可能无法正常工作的原因有以下几点:

  1. React使用虚拟DOM来管理页面的渲染和更新,它会在组件状态发生变化时重新渲染组件。而setCustomValidity()是直接操作DOM元素的方法,它需要在真实的DOM元素上调用才能生效。由于React使用虚拟DOM,可能会导致setCustomValidity()无法正确地更新DOM元素。
  2. React的表单组件通常使用受控组件的方式来处理表单数据。受控组件是指表单元素的值由React的状态管理,并通过onChange事件来更新状态。而setCustomValidity()是直接操作表单元素的验证状态,可能会与React的状态管理机制产生冲突。
  3. React的设计理念是将UI拆分为可重用的组件,每个组件都有自己的状态和生命周期。setCustomValidity()是直接操作表单元素的方法,它与React的组件化思想不太匹配,可能会导致代码结构混乱和维护困难。

针对以上问题,可以考虑以下解决方案:

  1. 使用React的表单验证库:React提供了一些表单验证库,如Formik、React Hook Form等,它们提供了更好的集成和管理表单验证的方式,可以避免直接使用setCustomValidity()的问题。
  2. 自定义表单验证组件:可以基于React的状态管理机制,自定义表单验证组件,通过props传递验证规则和错误消息,并在组件内部处理验证逻辑和显示错误消息。
  3. 使用第三方表单验证库:可以使用一些第三方的表单验证库,如Yup、Joi等,它们提供了更强大和灵活的表单验证功能,可以与React结合使用。

总结起来,setCustomValidity()在React应用中可能无法正常工作,因为它与React的虚拟DOM、状态管理和组件化思想不太匹配。为了解决表单验证的需求,可以使用React的表单验证库、自定义表单验证组件或第三方表单验证库来替代setCustomValidity()。

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

相关·内容

为什么从乙方出来的技术人,能在工作 ‘更猛,更持久’?

俗话说,“阳春三月,春光明媚,一年之计在于春”,但这句话如果用来形容处于春季的技术团队,恐怕会引来一阵虚声。...即便你个人的影响力达到极高的程度,或许也无法在与 “独角兽” 争夺人才的战斗讨得便宜。 该采取什么样的应对措施呢? “拥抱现实,应对现实” ,这是《原则》让我记忆较为深刻的一句话。...为什么 “更猛,更持久” ? 不可否认,有许多企业排斥从 “乙方公司” 出来的小伙伴,甚至根本不看类似的简历。...可是你却永远不在自己的公司工作,又怎么可能有归属感呢?...这时候,也许你就要再重新考虑住处和交通了,因此换工作的可能性会非常大。

45920

应用开发,我为什么选择 Flutter 而不是 React Native ?

作为一位开发人员,我想在本文中与大家聊聊跨平台开发领域的两大核心选项——Flutter 与 React Native 框架,并介绍我自己为什么更偏爱 Flutter。...为什么我更倾向于 Flutter 一段时间以来,React Native 一直是全球领先的跨平台开发框架。而且在 Flutter 出现之前,React Native 可谓无可匹敌。...开发高性能应用应用性能方面,Flutter 同样明显领先于 React Native。在几乎所有性能测试,Flutter 的性能都比 React Native 更好。...例如,在使用 Flutter 时,应用动画的运行速率可以达到每秒 60 帧。 对于混合应用开发,在将代码、原生组件以及库集成至新架构时,React Native 会带来更高的复杂性。...应用开发与发布自动化 我们都知道,在特定平台的商店中发布移动应用往往是个令人头痛的苦差事。而这方面工作在跨平台移动应用项目中,无疑更加困难万分。

3.2K20

2年过去了,React Forget 凉了么?

FC(函数组件)的大规模使用 Class Component中所有属性、方法都绑定在this,比如: this.state this.setState 开发者也能在this上挂载属性,这种灵活性为静态分析带来很大难度...videos; $[1] = filter; $[2] = filterdList; } else { filterdList = $[2]; } // ...省略 } 为什么直接生成...主要有两个原因: 对于一个FC,大部分原生Hook的数据会保存在一条单向链表(这也是「不能在条件语句中写 Hooks」的原因),会占用更多内存 在React Forget生成的代码,缓存保存在useMemoCache...这也意味着useMemoCache可以遵守「不能在条件语句中写 Hooks」这条规定。...虽然React Forget的工作原理看似简单,但考虑到大量的边界情况,实际实现起来会很复杂。

51340

【愚公系列】2023年03月 其他-Web前端基础面试题(react专项_35道)

) 的目的是什么 7、React事件处理 8、React如何创建refs 9、什么是JSX 10、为什么直接更新state状态 11、React的这三个点(...)是做什么的 12、简单介绍下react...15、当调用setState时,React render 是如何工作的 16、React key 的重要性是什么? 17、什么是Redux?...传递 props 给 super() 的原因则是便(在子类能在 constructor 访问 this.props。...React在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此推荐使用JSX 10、为什么直接更新state状态 如果直接更新state状态,那么它将不会重新渲染组件,而是使用...传递 props 给 super() 的原因则是便于(在子类)能在 constructor 访问 this.props 。

7.6K10

【Hooks】:不是魔法,仅仅是数组

React是怎么做的? 2.1. 初始化 2.2. 首次渲染 2.3. 随后的渲染 2.4. 事件处理 3. 为什么顺序很重要? 3.1. 糟糕的首次渲染 3.2....解析 hooks 的工作原理 先让大家能简单的理解新的 hooks API 的提案。...1.1. hooks 的 2 个规则 react 核心小组在提案文档指出,有 2 个使用规则是开发者必须去遵守的 不要在循环、条件语句、或嵌套函数调用 hooks hooks 只能在函数组件中使用 第...每个 setState 第一次执行,推送一个 setter 函数(绑定一个指针位置)到 setters 数组,推送一个 state 到 state 数组。 2.3....现在应该明白了为什么 hooks 不能在条件分支和循环中。因为我们处理的是数据集合的指针,要是你改变了调用顺序,指针会对应上,从而指向错误的数据或处理器。 4.

65110

React 作为 UI 运行时来使用

React 应用,通常你不会调用这些 API ,因为那是 React工作。 渲染器 渲染器告诉 React 如何与特定的宿主环境通信,以及如何管理它的宿主实例。...我们希望因为重建 DOM 而丢失了 selection、focus 等状态以及其中的内容。 虽然这个问题很容易解决(在下面我会马上讲到),但这个问题在 React 应用并不常见。...如果在同一位置的 type 改变了(由索引和可选的 key 决定),React 会删除其中的宿主实例并将其重建。 控制反转 你也许会好奇:为什么我们直接调用组件?...这也是为什么 React 将所有的工作分成了”渲染阶段“和”提交阶段“的原因。渲染阶段 是当 React 调用你的组件然后进行协调的时段。...注意状态本身是共享的。每次调用 Hook 都只声明了其自身的独立状态。 (你能在 React 文档 中学习更多关于构建自己的 Hooks 的内容。)

2.5K40

React 困境与未来,何时迎来自己的“Angular.js 时刻”?

React 对其进行了增强,能够自动请求重复数据删除。为什么一定要这样调整?...事实证明,它绝不是唯一跟 React 服务端组件兼容的库。...正因为如此,大部分 React 开发者才对单页应用架构非常满意。如果真需要做服务端渲染,我们完全可以选择生态系统比 React 服务端组件更成熟的其他工具。 那既然用不上,我们为什么还要认真讨论?...但服务端渲染的应用必须借助服务器才能运行,而服务器显然是可以营销的产品。也许我有点阴谋论的倾向,但除此之外我真的无法理解为什么要如此明目张胆地破坏 React 生态系统。...我也希望看到 Next.js 能在自己的官方文档淡化对服务端组件的强调,或者至少要明确标注其尚属于“Alpha”功能。 当然,也许事实证明我是错的,服务端组件才是未来。

23910

谷歌推出创新性 Web 开发工具 Project IDX,助力开发者构建强大应用

他回答说:“它在云中,在浏览器运行,但我们的目标是从许多方面解决开发者在开发应用(通常是移动应用)时所遇到的那些最大的问题。”例如,他说 IDX 可以帮助开发人员在各种移动设备上测试应用。...IDX 项目是为了帮助开发人员开发既能在 Web 上运行又能在各种移动操作系统上运行的应用。...在其文档,谷歌说“IDX 使用 Nix 定义每个工作空间的环境配置”。 因为我个人并不熟悉 Nix,所以我决定取消这个选项,然后继续创建工作空间的下一步……这时出现了一个错误。...“(我的工作地点在英国) IDX 为 React 开发人员带来了什么?...但我问 Chinnathambi,既然 React 开发人员有很多 IDE 可以选择,他们为什么要选择 IDX。

17710

jQuery基础

输入“星期二”,“星期三”,“星期四”时,弹出“努力工作” 输入“星期五”时,弹出“明天就是周末了” 输入其他内容,弹出“放松休息” 关键代码: <script type="text/javascript...; break; case "星期二": case "星期三": case "星期四": alert("努力工作。")...1) { $(this) .siblings() .val(i - 1); } else { alert("不能在减了哦...1)点击表格每一列的编辑按钮 或表格每一行的姓名列,弹出人员详细信息窗口; 2)修改弹出窗口的标题为“人员详细信息”; 3)将当前行数据信息,回显至弹出界面对应的输入框; 4) 数据验证通过后,...1) 点击每行的删除按钮 ,删除当前行数据信息; 以下为关键代码,包含样式。 HTML部分 JS部分 <!

7.3K10

是时候说再见了,Enzyme.js

这并不是说你就应该立即停止手头的所有工作,赶快去重写代码来用上更新的软件,也代表那些已弃用的软件肯定不会再得到维护了。...对 React 17 的支持也是近一年来的一个开放问题,你只能在 6 个试图为 Enzyme 提供 React 17 支持的非官方适配器做出选择,每个适配器都解决了自己的一部分问题,也有自己的一些麻烦...React 核心团队鼓励这样做 这个论点不一定会引起你的共鸣,但对我来说,React 背后的专家鼓励使用 Enzyme,并建议改用 React Testing Library,这一点是很重要的。...问题本质上来说当然是更复杂的,我们应该问一下为什么在使用 Enzyme 的数千家公司,真正为它的开源代码做出贡献的公司如此之少。要知道这些开源代码是为他们带来收入的啊。...如果你正在思考该如何拆分你的测试,我鼓励你在 React Testing Library 编写尽可能多的测试。如果某些东西不能在 RTL 测试(比如通过拖放在 SVG 绘制一个矩形!)

44610

前端一面必会react面试题(持续更新

对于React而言,每当应用的状态被改变时,全部子组件都会重新渲染。...因为dom的描绘非常消耗性能,如果我们能在shouldComponentUpdate方法能够写出更优化的dom diff算法,可以极大的提高性能react 生命周期初始化阶段:getDefaultProps...因为 dom 的描绘非常消耗性能,如果我们能在 shouldComponentUpdate 方法能够写出更优化的 dom diff 算法,可以极大的提高性能。...在react17 会删除以下三个生命周期 componentWillMount,componentWillReceiveProps , componentWillUpdateReact 的工作原理React...React 还可以使用 Node 进行服务器渲染,或使用 React Native 开发原生移动应用。因为 React 组件可以映射为对应的原生控件。

1.6K20

super(props) 真的那么重要吗?

为什么我们要调用super? 可以调用它吗? 如果必须要调用,传递prop参数会发生什么? 还有其他参数吗?...重要的是,在调用父类构造函数之前,你不能在构造函数中使用this。 JavaScript 是不会让你这样做的: ?...但是不知道为什么,即便是你调用 super 时没有传递 props 参数,仍然可以在 render 和其他方法访问this.props。 (不信你可以亲自去试试!) 这是究竟是为什么呢?...如果这种情况发生在从构造函数调用的某个方法,可能会给调试工作带来很大的麻烦。 这就是为什么我建议总是调用 super(props) ,即使在没有必要的情况之下: ?...那么为什么我们写成 super(props, context) 呢? 我们当然可以这样做,但是使用context的频率比较低,所以这个坑并没有那么多影响。

1.3K50

React V16.9来了 无痛感升级 加入性能检测 【译-真香】

这与React在处理真实浏览器事件时的工作方式相匹配,并有助于为将来React将更频繁地批量更新的组件做好准备。 但是,在16.8act()仅支持同步功能。...性能测量 在React 16.5,我们为DevTools引入了一个新的React Profiler,它可以帮助您找到应用程序的性能瓶颈。...在React 16.9,我们还添加了一种编程方式来收集所谓的测量。我们预计大多数较小的应用都不会使用它,但在较大的应用中跟踪性能回归可能很方便。...现在React Hooks已经推出,并行模式和数据提取的悬念工作正在全面展开。目前正在积极开发的新Facebook网站建立在这些功能之上。...我们希望再次过度推销发布日期。鉴于我们在生产代码依赖于它们,我们希望今年能够提供16.x版本,并为其提供选择支持。

4.7K30

React 面试筹备不完全指南

React 事件与 DOM 事件有什么区别? 为什么 React 要加入 Hook ?...就像搭建乐高玩具一样,组件就是组成整个应用唯一零部件。 但是从实际编码上来讲,可以是纯函数组件或者类组件,也可能在函数中产生影响 UI 生成的副作用,比如直接操作 DOM 或者绑定事件等。...,你可以使用 React-dom 开发 PC 网页或者移动端网页;使用 React-Native,开发 iOS 与 Android 应用;还有 React-360 可以开发 VR 应用;甚至可以使用 React-ink...为什么 React 选择使用 JSX ? 这里问 “为什么 React 选择使用 JSX ?”,其引申含义是 “为什么不用 A、B、C?”...举个例子,你二婶儿给你介绍了俩对象,一个温婉可爱小鸟依人,一个上得厅堂下得厨房,结果你依然选择单身找对象,你二婶儿就问你为啥呀?你如果说单身有多好,你一定会被怼?怎么回答呢?

80500

「 重磅 」React Server Components

需要事先说明的是: React Server Components 仍在研发。 本着透明的精神,分享这项工作,并期望从 React 社区获得初步反馈。...先看软件研发的几个原则: Good Cheap Fast 每一个顶点,都要受其他亮点的制约。 比如,我们既想要成本低, 又想快速完成开发, 那可能在一定程度上要牺牲产品的质量。...理想的方案 具备这种能力的组件,也就是我们今天的主角:React Server Components. 能在服务端运行的React组件。...0 打包体积 比如, 我们要开发一款编辑器应用,引用了一些体积比较大的外部代码: 但是, 如果这部分做成RSC组件的话,就可以做到0 体积打包: 为什么呢?...几个 React IO 库 更多进展 Q & A 看到这, 我们的几个疑问就有答案了: Q: Server Components是什么: A: 能在服务端运行的React组件。

1.4K20

阿里前端二面高频react面试题

什么是 PropsProps 是 React 属性的简写。它们是只读组件,必须保持纯,即不可变。它们总是在整个应用从父组件传递到子组件。子组件永远不能将 prop 送回父组件。...一、更容易复用代码二、清爽的代码风格+代码量更少缺点状态不同步 不好用的useEffect,Reactrefs的作用是什么?有哪些应用场景?...当在父组件需要访问子组件的 ref 时可使用传递 Refs 或回调 Refs。对 React-Intl 的理解,它的工作原理?...它提供了一系列的React组件,包括数字格式化、字符串格式化、日期格式化等。在React-intl,可以配置不同的语言包,他的工作原理就是根据需要,在语言包之间进行切换。...constructor 为什么不先渲染?由ES6的继承规则得知,不管子类写写constructor,在new实例的过程都会给补上constructor。

1.1K20
领券