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

也是长了个教训

相关推荐
IT_陈寒1 小时前
SpringBoot 项目启动慢?这5个优化技巧让你的应用快50%
前端·人工智能·后端
GISer_Jing2 小时前
React核心语法:组件化与声明式编程
前端·react.js·前端框架
DJ斯特拉2 小时前
文件上传(UUID防止重名文件&&阿里云实现云端上传&&MultipartFile接收前端文件)
前端
掘金安东尼2 小时前
企业级Claw落地避坑指南:70%项目失败的真实原因
前端·面试·github
这儿有一堆花2 小时前
从技术标准到营销概念:深度解析 HTML5 与 H5 的演变与区别
前端·html·html5
我命由我123452 小时前
React - 创建 React 项目、React 项目结构、React 简单案例、TodoList 案例
前端·javascript·react.js·前端框架·ecmascript·html5·js
SuperEugene2 小时前
Vue3 Pinia 状态管理规范:何时用 Pinia 何时用本地状态|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
Moment2 小时前
TypeScript 要换芯了,6.0 竟是旧编译器的最后一舞
前端·javascript·github
Cg136269159742 小时前
Element-入门
前端