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` 等)

也是长了个教训

相关推荐
风骏时光牛马11 小时前
大模型底层架构与AI源码深度剖析
前端
掘金挖土12 小时前
前端手摸手跑路之 AI 应用开发(九)
前端·后端
中文呀14 小时前
三维 GIS 离线缓存实战:逆向 CesiumOfflineCache,并亲手为它补上"自动更新"能力
前端
前进前进前进15 小时前
TRAE 全链路实战:做了一个警示牌一键生成器:纯 Canvas、单文件、零依赖
前端
小万74216 小时前
God‘s Eye View 深度解析:15 路公开信号 + CesiumJS 的浏览器级 OSINT 控制台,60 帧渲染的“真实间谍卫星模拟器”
前端
IT星宿16 小时前
浏览器标签页全是一个图标:我用名字哈希生成 favicon,让每个项目都有身份标识
前端
OpsEye16 小时前
大模型账单对账难:不同厂商 Token 统计口径差异怎么处理
javascript·ai编程
全栈项目管理程序猿16 小时前
ArcGIS JS 基础教程(32):体元系列 - VoxelSlice 体元切片
前端·javascript
结局无敌18 小时前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos