React 表单提交关键词意外触发刷新

今天遇到一个问题,我是一个搜索栏,点击查询的时候,直接触发的刷新页面,页面的参数因为刷新直接全没了,也查询不了数据

我看了一下控制台有个报错

bash 复制代码
Uncaught TypeError: elem.nodeName.toLowerCase is not a function

我用断点查询,发现我每次点击调用 Form 的 onFinish 事件,断点都进不来。

经过仔细查找,发现了奇点。

我的表单字段有一个 nodeName很巧这个这个字段和 DOM 原生属性 nodeName 重命了

在特定环境下,如果表单控件映射覆盖了表单实例上的同名属性,可能导致 form.nodeName 不再是字符串。

React 在事件提取时调用 elem.nodeName.toLowerCase(),因此会报错,直接导致了我项目的底层依赖,某些情况下开发环境报错会刷新

既然问题找到了,那就好改了,两个办法

一、From 增加一个 name 字段 避免内部控件映射产生裸字段冲突

html 复制代码
<Form name="test" >

二、表单字段改成非原生同名字段,再在提交时映射回接口参数

javascript 复制代码
- 表单字段:`nodeNameKeyword`
- 提交映射:`{ nodeName: nodeNameKeyword }`

避免使用与 DOM 原生属性同名的字段名(如 `nodeName`、`action`、`method` 等)

也是长了个教训

相关推荐
DianSan_ERP7 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
碎_浪9 小时前
给键盘党的英语记忆工具:我做了一款「打字背单词」桌面应用
前端·程序员·ai编程
阿成学长_Cain10 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
多加点辣也没关系11 小时前
JavaScript|第4章:类型转换
开发语言·javascript
yqcoder11 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
IT_陈寒11 小时前
Java的Stream.parallel()把我CPU跑爆了,这种优化要谨慎
前端·人工智能·后端
小皮虾11 小时前
小程序首页性能优化实战:从 4 秒到 1.8 秒
前端·微信小程序
烬羽11 小时前
还在手动拼路径、写回调地狱?一文吃透 Node.js 的 path 和 fs
javascript·程序员·node.js
山河木马11 小时前
GPU自动处理专题1-裁剪到底在裁什么(裁剪)
前端·webgl·计算机图形学