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

也是长了个教训

相关推荐
GISer_Jing10 分钟前
前端沙箱开源项目推荐(React/Next/Vue优先)
前端·react.js·开源
云水一下14 分钟前
CSS3从零基础到精通(三):动感地带——过渡、动画、变形与响应式
前端·css3
KaMeidebaby1 小时前
卡梅德生物技术快报|Western Blot 实验应用:肺肠轴机制研究全流程技术解析
前端·数据库·人工智能·算法·百度
MageGojo1 小时前
做节日活动页时,如何用 API 快速生成对联内容
javascript·python·节日·对联生成
达达爱吃肉1 小时前
claude 接入deepseek 运行报错
java·服务器·前端
jingling5551 小时前
Flutter | Dio网络请求实战
android·开发语言·前端·flutter
向上的车轮1 小时前
Next.js 入门指南:从零到一构建全栈应用
开发语言·javascript·ecmascript
freeinlife'1 小时前
精准秒表计时器实现---基于js
开发语言·前端·javascript
王文?问1 小时前
ESP32-S3 实战教程:本地语音识别控制 Web 塔防游戏,从固件到前端完整跑通
前端·游戏·语音识别
Hoshizola2 小时前
uniapp与蓝牙设备连接详细步骤
前端·uni-app