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

也是长了个教训

相关推荐
__zRainy__32 分钟前
Node.js Web 框架选型指南:从 Express 到 Hono 的全景对比
前端·node.js·express·koa·nestjs·egg·fastify
西瓜有点饿40 分钟前
PostCSS 和 UnoCSS 的作用和区别
前端·postcss
mCell41 分钟前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
伟大的兔神1 小时前
我做了一个本地优先的 AI 图片工作台:Loomora v1.0.0 正式发布
前端·javascript·vue.js
90后的晨仔2 小时前
uni-app项目 Vue3 状态管理 Pinia 完全指南:从概念到实战的深度解析
前端
90后的晨仔3 小时前
uni-app 在 iOS 平台跳转页面时移除底部安全区域的完整技术指南
前端
用户938515635073 小时前
React + JWT 登录鉴权底层原理与工程化实践
前端·react.js
zww89491113 小时前
家政派单系统开发实战:架构设计与派单算法指南
前端·系统架构
fangzhanpeng1684 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript
赵广陆4 小时前
企业实战:web服务集成
前端·pycharm·fastapi