React + Ant Design 4 使用过程中问题搜集

别再手动上传了!用宝塔面板的‘Let‘s Encrypt’免费SSL证书,3分钟自动续期 本文详细介绍了如何利用宝塔面板的‘Let‘s Encrypt’功能实现SSL证书的自动申请和续期,3分钟完成配置即可永久免费使用。通过对比不同SSL证书方案,突出Let's Encrypt的免费、自动续期和高安全性优势,特别适合个人博客和中小企业官网。 阅读详情

1. Anchor 描点不生效

原因:

1. 滚动的window没有滚动事件

2. 待滚动的描点,未在页面中标记

解决方案:

1. getContainer=()=> document.body 给Anchor组件指定绑定的容器

// 默认指定的是window
...
<Anchor getContainer=()=> document.body>
...

2. 元素需要标记的id="描点不包含#" 才能生效

// href指定的dome,  元素内指定id=dome
<Anchor>
    <Anchor.Link title="title" href="#dome"/>
...
</Anchor>
...
<div id="dome">
...
</div>

2. Anchor 每次点击都会触发路由变化

解决方案:

const handleClick = (e)=>{
e.preventDefault();
}
...
<Anchor onClick={handleClick}>
...
</Anchor>

3. react报错:Can't perform a React state update on an unmounted component

原因: 由于组件被销毁后,还在调用更新state的逻辑

解决方案: 1、 class类组件,可以重写componentWillUnmount

class Component extends React.Component{
....

componentWillUnmount(){
    this.setState = ()=>{}
}

...

 2、 function组件的实现方法,这个有点要求

const [loading,setLoading] = useState(false);

useEffect(()=>{
    // 这个只能控制当前回调函数内的作用域
    let ignore = false;
    
    const request = async ()=>{
        // ...    
        if(ignore){ // 如果已卸载不调用任何useState
            return;
        }
        setLoading(true);
    }
    
    return ()=>{
        ignore = true;
    };
}, []);

4. react报错:findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DomWrapper which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs

原因:由于使用了StrictMode组件,开启了严格模式校验,而findDOMNode方法已经被弃用或者未来版本会被React放弃,因此在严格模式下会报错,警示项目中或Ant框架还在使用这个可能被弃用的方法

解决方案: 1、项目内如果有使用findDomNode方法获取元素的逻辑,可以替换成使用ref 

2、还可以去掉StrictMode组件,一般在index.js文件内(不太建议,严格模式仅生效于开发环境,可以帮助检测项目)

参考官方:严格模式 – 反应 (reactjs.org)https://reactjs.org/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage

5.  react报错:[antd: Form.Item] `name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead. 

原因:Form.Item组件下没有可Input或Select组件之类的组件,如果不需要输入类的组件,可以去掉属性name

# 这种设置name属性的会校验内部的子组件
<Form.Item name="name">
<Input />
</Form.Item>
# 不需要校验的或不需要输入组件的,需要去掉name属性
<Form.Item>
<div>text</div>
</Form.Item>

6. react告警:React Hook useEffect has missing dependencies: 'XXX'. Either include them or remove the dependency array  react-hooks/exhaustive-deps

原因: 官方给的意思是,useEffect内部使用了外部变量,但是却未监听这些变量的变化,会导致某些外部变量更新却没有回调useEffect的回调函数的bug出现;但是业务中还是存在一种情况,只需要在首次渲染仅调用一次,但又使用了外部变量的情况

解决方案: 

1、 官方的意见 Docs

// 官方意见, useEffect内部使用的变量和方法都定义在函数内部

const [loading, setLoading] = useState(false);

useEffect(()=>{
    const fetch = async ()=>{
        setLoading(true);
        ....
        setLoading(false);
    }    
    fetch().then(r=>r);  // 调用的方法在内部
}, []);


// 例子 2

const {name} = props;

useEffect(()=>{
    const doString = ()=>{
        return name;
    }
    doString();  
}, [name]);  // 由于内部使用了外部的name变量, 官方推荐需要监听name, 否则易出现外部name变量,但是却不会再调用回调方法
// ps:  这里传递的需要监听的方法,不能是函数类型, 如果传递函数类型会报错

2、 特殊情况,仅仅需要只调用一次回调函数,但是却需要使用外部变量或函数等,但又不希望看到eslint的警告时

const {name, title, visible} = props;

const fetch = (name, title)=>{
    console.log(name, title);
}

// 可以使用官方建议的另一种方式 useRef 来保存不变的量
const initValue = useRef({});
useEffet(()=>{  // 当前函数每次更新都会调用,需要更新最新的数据,否则在下面使用的时候获取不到当时最新的数据
    initValue.current = {
        name, title,   // 需要使用的数据, 内部不能使用函数,否则会报错
    };
});

useEffet(()=>{
    const {name, title, fetch} = initValue.current;  // 重新获取需要的数据
    fetch(name, title); 
}, [initValue]); // 监听initValue时,不会因为内部数据变化而重复触发回调
// ps : 经测试, 这里也可以不监听initValue, 也不会有eslint告警

7. react报错:validateDOMNesting(...): <form> cannot appear as a descendant of <form>. 

 原因: Form组件内部不存在可校验的Form.Item子组件(必须带有name属性的)

PS :  如果不存在子组件,并且使用了Button的htmlType=submit属性或者手动submit调用,表单会变成原生的表单(效果是点击直接刷新了页面)

解决方案: 如果使用Form组件时,内部不存在校验项, 不建议使用Form表单或者 不要调用表单的submit

8. react报错:antd DatePicker 报错 date.clone is not a function 

原因: Antd里的 DatePicker组件的value值都是moment格式, 无论是填充或传给后端,都需要对日期的值使用moment处理

moment的文档地址:  首页 | Moment.js 中文文档

 9. react告警:The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles.

 原因: 页面内使用了不安全的a标签跳转链接

解决方案: 1 、使用Link组件替换;

2、或者检查a标签的必要属性: 

        a>  href不能为空、#、javascript:xxx等代码,必须属于有效链接;

        b>  rel不能为空,必须指定 noopener ,避免被非法攻击

 10. react+antd解决报错:Module not found: Can't resolve 'antd/es/affix'

 原因: 1、 可能是版本不一致; 2、 babel的配置有错误 ;  3、antd未安装成功

 解决方案: 1、重新安装版本; 2、 如果是babel配置错误,检查.babelrc文件或者package.json内babel属性

11. validateDOMNesting(...): <form> cannot appear as a descendant of <form>.

 原因: Form组件出现了嵌套导致的

 解决方案: Form组件不能嵌套另一个Form组件, 移除内部的Form组件

12. Module Error (from ./node_modules/sass-loader/dist/cjs.js): Cannot find module 'sass' Require stack:

 原因: 未安装node-sass模块

解决方案: yarn add node-sass 或 npm install node-sass

13.  The above error occurred in the <Text> component:

原因: HTML结构有问题导致的,框架无法渲染,react16以后,如果出现结构错误,会卸载整个页面

解决方案: 检查视图结构

特殊参考:原因就是文本与组件文本相连时,容易导致xml结构问题

//例子
...
const content = "";

return <div>
    <div>文字内容{content}</div>
</div>

// 以上结构看起来并没有什么问题,但是如果content是可变的量

const [content, setContent] = useState(null);

return <div>
    <div>文字内容{content}</div>
</div>

// 如果是这种情况下,首次渲染并不会出现问题,二次渲染值不为空也不会有问题
// 如果二次渲染时content值再次变化为空值时,就会导致页面结构出错
// react框架会出现无法删除原来的textNode元素,导致整个页面结构被卸载

纠正参考:

// 上述代码建议修改:

const [content, setContent] = useState(null);
...
return <div>
    <div>文字文本<div>{content}</div></div>
</div> 

// 如果出现文字与文本组件相连的建议给文本组件外套一层标签,可以让框架能找到所在根节点

14.  Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

原因同上13

当前错误多数出现在页面的结构有错误的情况下,框架在渲染组件时,会对真实DOM进行增删操作,如果页面结构有问题,容易导致DOM操作失败

页面结构有错误的检验方式: 整个页面被卸载, 页面一片空白,没有渲染出任何真实元素

后续继续补充... 

解密美团外卖API:mtgsig和waimai_sign参数生成原理与Python实现 本文深入解析了美团外卖API中核心风控参数mtgsig和waimai_sign的生成原理与实现方法。文章详细拆解了waimai_sign作为业务数据签名、mtgsig作为请求环境签名的不同角色与生成逻辑,并通过Python代码示例演示了如何通过逆向工程、Frida动态Hook等技术手段模拟签名生成过程,为开发者理解移动端API安全机制提供了实战参考。 阅读详情

相关推荐

RK3588 实战级 YOLOv5 Android 全解析:NPU 量化 + 多线程 + 跟踪算法,源码一次买齐

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

FJN110的博客 129

前端常见错误/警告

1. Warning: [antd: Form.Item] `name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name 答:注册FormItem中的name属性,name用于验证表单,但是你显示的内容不是表单元素 2. date.clone is not a function 答:设置日期默认值失败,格式(数据类型)不符合。可以在Fo

weixin_44415764的博客 1万+

pycharm下载continue插件接入DeepSeek的API,向其提问输出乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2129

解决Ant Design错误警告:validateDOMNesting(...):form> cannot appear as a descendant of <form.

在ModalForm弹框中使用带搜索的ProTable,报如下错误: devScripts.js:6523 Warning: validateDOMNesting(...): <form> cannot appear as a descendant of <form>. 错误信息:<form>里面不能嵌套<form> 产生原因:ModalForm是带form的,ProTable的搜索框也是带form的,所以会报错。 ...

清风明月的博客 2万+

前端常见警告:Waring: antd: Form Iteml name is only used for validate React element.

原因:Form.Item组件下没有可Input或Select组件之类的组件,如果不需要校验或输入内容,可以去掉属性name(如下图)该警告出现在reactantd使用中,意为FormItem中的name属性,name用于验证表单,但是你显示的内容不是表单元素。

weixin_61876780的博客 1561

react的<a></a>必须提供一个有效的href属性

“The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value.

hdj0511的博客 1005

react ant design pro用yarn build打包后加载不出来效果的解决办法

最近在做一个从0开始的react项目,我们要做一个后台管理系统,然后需要打包成可执行的.exe文件和.apk文件,能在windown系统和Android系统都能运行,然后我发现在打包antd pro 项目的时候一直有问题找不到资源,我就在网上找了很多资料,最后解决了,下面分享一下我的解决办法。

qq_46665317的博客 1063

AI 大模型学习:为提示词工程添加一个前端界面(React 实战篇)

今天我们就用 React + Ant Design + Axios,为昨天的 FastAPI 后端打造一个 ✨提示词生成器前端✨。

瓦罗兰特顶级C位的博客 1256

如何获取reactantdesign中form表单中的值

//获取所有值 this.props.form.getFieldsValue //获取某个元素的值 this.props.form.getFieldsValue("id") // id是你在form中定义的变量 <Form> <Row> <Col> <FormItem> {getFieldDecorator("id",{initialValue:""})( <Input /> )} </FormIt

liuxi_happy的博客 3249

React项目实战(仿微信):用前端代码构建一个跨平台桌面聊天应用

这是一个记录日常构建项目的博客,欢迎各位大佬提出建议,感激不尽。本项目创作灵感基于bilibili平台up主:程序员老罗 的投稿【Vu3+Electron 项目实战EasyChat 仿微信 即时通讯 计算机毕业设计 简历项目 项目经验(已完结)】node.js安装(官网下载)构建electron选择react,然后接下来 1、2 步都选否,最后一个选择是,都选否也没问题,然后然后安装antdreact等常用依赖自行安装。

2302_79474087的博客 1232

es6 table 增加行_Ant Design 4.0.0-rc.0 发布,打包尺寸降低50%并增加黑色主题

前言Ant Design 4.0.0-rc.0 发布了。Ant Design 是阿里开源的一套企业级的 UI 设计语言和 React 实现,使用 TypeScript 构建,提供完整的类型定义文件,自带提炼自企业级中后台产品的交互语言和视觉风格、开箱即用的高质量 React 组件与全链路开发和设计工具体系。特性企业级金融产品的交互语言和视觉体系。丰富实用的 React UI 组件。基于 React...

weixin_39616045的博客 145

msclass 文字滚动_js文字横向滚动

iScroll.js 用法参考 (share)分享是传播、学习知识最好的方法以下这篇文章是iScroll.js官网的中文翻译,尽管自己英文不好,但觉得原作者们翻译的这个资料还是可以的,基本用法介绍清楚了。如果你英文比较好的话,可以看看官网的资料。参考:http://www.cnblogs.com/asqq/archive/2012/04/...文章最美的回忆2017-11-281197浏览量iSc...

weixin_35932973的博客 266

看似简单的input框输入竟异常卡顿,记一个日常性能问题的排查思路

我们公司产品主要提供企业项目管理服务,那么自然有配套的desk工单管理系统,用于搜集客户bug以及相关问题反馈。有一天我在测试功能时碰巧发现了一个bug,所以就想着提一个工单记录下方便日后修复。但就在创建工单填写标题时我发现标题输入卡爆了,本想着创建一个bug工单,结果又附带新建了一个性能bug单…下图便是当时问题表现可以看到我只要连续操作,输入框都存在非常明显的卡顿,输入并不流畅,那么本文主要记录此问题的排查思路,以及部分性能排查小技巧,本文开始。...

行星飞行的博客 5323

无线客户端同学快速学习ReactNative的学习曲线(转载)

作为非前端开发人员,这两天对React-Native以及所涉及的一些必须的技术进行了一下恶补,把网上比较好的学习资料搜集了一下,方便感兴趣的同学更快的了解和切入RN的开发,并且快速扫清背景知识。 大家都不是新手,所以,我们不从“hello world”开始,而是针对以前没有前端开发经历的客户端开发同学,从最基础的背景技术开始演进:   1. HTML(学习时间30分钟):

Min的专栏 1642

Codex Skill深度解析:8个必装技能让AI编程助手从问答机变执行者

在AI编程领域,Skill(技能)是提升开发效率的关键。它本质上是一种封装了特定领域知识、工作流和最佳实践的“插件”或“指令集”,能让AI助手从简单的问答模式,升级为能理解上下文、执行复杂任务的“专家系统”。其技术原理在于通过预定义的模板和规则,将自然语言指令映射为结构化的代码、文档或操作流程,从而大幅降低开发者的认知负荷,保证输出的一致性和规范性。这种技术价值在于将开发者从重复性劳动中解放出来,使其能更专注于核心业务逻辑和创新性设计。应用场景广泛覆盖软件开发全生命周期,包括但不限于快速生成标准CRUD代码

weixin_33725270的博客 480

Warning:validateDOMNesting(...):<p> cannot as a descendant of <p> 报错解决

报错信息: Warning:validateDOMNesting(...):<p> cannot as a descendant of <p> 报错截图: 这个错误主要就是 html 标签 写法不规范引起的: p标签内只能包裹内联元素, 不能包裹块级元素 , 代码里出现了 p标签 包裹 块元素的现象 。 比如 : <p> <p></p> </p> <p> <div></div.

从事前端,不断积累经验,学习新的技术。头像不是本人是莉莉崽(美貌、可爱集于一身的小姐姐,小仙女),一个宝藏博主,值得喜欢! 2922

前端常出现报错信息1

代写

qq_37734787的博客 445

The href attribute requires a valid value to be accessible.Provide a valid, navigable address as the

react使用a标签报错, 解决办法将<a href="#" >个人博客</a> 改成<a href="/#" >个人博客</a> 加个/ 即可

qq_40011214的博客 4839

antd form表单验证,表单初始值

form.setFieldsValue(initialValues);实现设置初始默认值 form.validateFields()实现对输入的值进行验证 完整代码如下: import React, { useState, useEffect } from 'react'; import { Button, Form, Modal, Input, } from 'antd'; import _ from 'lodash'; import { connect, useIntl } from 'umi';

前端小白成长记 6474

2020/09/29 a标签报错 The href attribute requires a valid value to be accessible. Provide a valid

报错详情 The href attribute requires a valid value to be accessible. Provide a valid, 出错代码 解决方法 #号那里改成 /# 即可

Nighsloth的博客 909

p标签包裹div标签结构导致的报错:<div> cannot appear as a descendant of <p>

接手了上任的工作后,发现不少的问题,在control中爆出了这样一大片的错误,找到对应位置后,仔细一看发现是p标签内包了很多的div标签,这还得了,直接随手就改了。 devScripts.js:5836 Warning: validateDOMNesting(...): <div> cannot appear as a descendant of <p>. in div (at PieCharts.tsx:277) in p (at PieCharts.tsx:269

cautionHua的博客 3530

基于Springboot+mysql的图书馆管理系统设计与实现(源码+文档).zip

资源名字:基于Springboot+mysql的图书馆管理系统设计与实现(源码+文档).zip资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。包含模块:3.1 前台设计3.1.1 登录界面3.1.2 读者模块3.1.2.1 编辑个人信息3.1.2.2 查询馆藏书籍3.1.2.3 查询个人借阅记录3.2 后台设计3.2.1 用户管理3.2.2 书籍管理3.2.3 借阅记录管理3.3 安全设计

Mkbus_0_mkbus0.18.2.8_haspemulator_Mkbus_源码.zip

Mkbus_0_mkbus0.18.2.8_haspemulator_Mkbus_源码.zip

上一篇: PHP错误问题收集
下一篇: 使用docker构建镜像的另一种方式
码农@cj
博客等级 码龄13年 2粉丝 · 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值