react18函数组件+antd使用指南-使用代码集合以及报错记录汇总

简介: 本文介绍了多个React开发中常见的问题及其解决方案,包括但不限于:1)`useForm`实例未连接到任何`Form`元素的警告及解决方法;2)监听页面滚动事件的实现方式;3)React 18与antd 5.8.6中定制主题的方法;4)React结合antd 4.x版本自定义主题色的步骤;5)解决`ResizeObserver loop`相关报错的技巧;6)处理React设计表单时遇到的CDN资源加载失败问题;7)解决onClick事件传参问题;8)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
  1. react报错-Warning: Instance created by useForm is not connected to any Form element. Forget to pass form prop?
    问题分析
    解决方案
    如果是除了modal嵌套类型出现此种报错,我们可以设置如果组件并未渲染,不要调用form的实例,在外层加一个判断,return里去掉form渲染的代码
    Modal中嵌套Form表单的情况解决方案
    2.监听页面滚动事件,获取页面滚动到哪里了
    解决方案
    3.React 18 + antd 5.8.6 更改主题色-定制主题(4.x修改主题配色请参考第四条)
    解决方案
  2. React + antd 4.X 更改主题色-定制主题
    解决方案-配置 less 变量文件
  3. React报错ResizeObserver loop completed with undelivered notifications.
    问题分析
    解决方案
  4. React designable formily antd form designer 很多cdn.jsdelivr.net资源找不到的问题,cdn.jsdelivr.net访问报错
    问题分析
    解决方案1:
    解决方案2:
    解决方案3:请参考本文第12个问题,有更多处理解决方案详解
    7.React onClick事件无法传参 不管用 或者报错
    解决方案
    8.React报错Property 'pathname' is missing in type '{ children: Element; }' but required in type '
    解决方案1
    解决方案2 (不建议这么做)
    解决方案3 (不建议这么做)
    9.React报错Type '{ children: string; }' has no properties in common with type 'IntrinsicAttributes & ITextWidgetProps'.
    解决方案(这个有待验证,如果没有用,请留言)
  5. 多种方案教你 React页面传参
    方案1:使用useNavigate 和 useLocation进行页面传参
    点击按钮携带参数跳转逻辑
    获取参数传递内容逻辑
    方案2 使用useNavigate 和 useSearchParams 进行页面传参
  6. React 中 window.scrollTo函数不管用是怎么回事?如何解决React中滚动顶部不管用的问题?
    问题分析
    解决方案
    CSS
    TSX
  7. cdn.jsdelivr.net下载失败的多种处理方案, formily @designable/react-settings-form下载https://cdn.jsdelivr.net/npm/monaco-editor@0.36.1/min/vs/loader.js报错失败异常处理解决方案
    解决方案1 有的依赖不是写死的,比如这个
    我们就可以采用下面方式解决
    比如下面这个monaco-editor/loader提供了这种方式解决
    解决方案 2 如果文件是写死的
    搜索包文件后发现这个文件名是写死的
    将@monaco-editor从node_modules复制到我们的项目目录下
    批量替换
    大功告成
    13.The package "@esbuild/win32-x64" could not be found, and is needed by esbuild.
    解决方案
  8. vite突然不热更新了怎么办???10秒钟解决Vite hmr热更新失效BUG
    解决方案
    15.最近在使用 react + antd 进行前端项目开发,开发过程中遇到了这些报错
    报错1: Each child in a list should have a unique “key“ prop.Check the render method of Cell.
    报错图示
    解决方案:
  9. Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons
    17.待补充
    今天就写到这里啦~
    欢迎路过的小哥哥小姐姐们提出更好的意见哇~~
  10. react报错-Warning: Instance created by useForm is not connected to any Form element. Forget to pass form prop?
    当前使用版本

    "@designable/core": "^1.0.0-beta.45",
    "@designable/formily-antd": "^1.0.0-beta.45",
    "@designable/react-settings-form": "^1.0.0-beta.45",
    "@formily/antd": "^2.2.29",
    "@ice/runtime": "^1.0.0",
    "antd": "^4.22.8",
    问题分析
    当页面初始化时form对象找不到可关联的Form表单,出现上述警告,我们需要设置根据visible来设置表单

解决方案
如果是除了modal嵌套类型出现此种报错,我们可以设置如果组件并未渲染,不要调用form的实例,在外层加一个判断,return里去掉form渲染的代码
Modal中嵌套Form表单的情况解决方案
const useResetFormOnCloseModal = ({ form, visible }) => {
const prevVisibleRef = useRef();
useEffect(() => {
prevVisibleRef.current = visible;
}, [visible]);
const prevVisible = prevVisibleRef.current;
useEffect(() => {
if (!visible && prevVisible) {
form.resetFields();
}
}, [visible]);
};

const ModalForm = ({ visible, onCancel }) => {
const [form] = Form.useForm();
useResetFormOnCloseModal({
form,
visible,
});

const onOk = () => {
form.submit();
};

return (










);
};

2.监听页面滚动事件,获取页面滚动到哪里了
解决方案
参考文档

import React, { useRef } from 'react';
import { useScroll } from 'ahooks';

export default () => {
const ref = useRef(null);

const scroll = useScroll(ref, (val) => val.top > 100 && val.top < 200);

return (
<>

{JSON.stringify(scroll)}




Lorem ipsum dolor sit amet, consectetur adipisicing elit. A aspernatur atque, debitis ex
excepturi explicabo iste iure labore molestiae neque optio perspiciatis


Aspernatur cupiditate, deleniti id incidunt mollitia omnis! A aspernatur assumenda
consequuntur culpa cumque dignissimos enim eos, et fugit natus nemo nesciunt


Alias aut deserunt expedita, inventore maiores minima officia porro rem. Accusamus ducimus
magni modi mollitia nihil nisi provident


Alias aut autem consequuntur doloremque esse facilis id molestiae neque officia placeat,
quia quisquam repellendus reprehenderit.


Adipisci blanditiis facere nam perspiciatis sit soluta ullam! Architecto aut blanditiis,
consectetur corporis cum deserunt distinctio dolore eius est exercitationem

Ab aliquid asperiores assumenda corporis cumque dolorum expedita


Culpa cumque eveniet natus totam! Adipisci, animi at commodi delectus distinctio dolore
earum, eum expedita facilis


Quod sit, temporibus! Amet animi fugit officiis perspiciatis, quis unde. Cumque
dignissimos distinctio, dolor eaque est fugit nisi non pariatur porro possimus, quas quasi


</>
);
};
3.React 18 + antd 5.8.6 更改主题色-定制主题(4.x修改主题配色请参考第四条)
文档在此: https://ant-design.antgroup.com/docs/react/customize-theme-cn

解决方案
碎碎念:其实使用很简单,就是用ConfigProvider包一下你的组件就行了,比4.X版本改色简单多啦~~~~

import { Button, ConfigProvider, Space } from 'antd';
import React from 'react';

const App: React.FC = () => (
<ConfigProvider
theme={ {
token: {
// Seed Token,影响范围大
colorPrimary: '#00b96b',
borderRadius: 2,

    // 派生变量,影响范围小
    colorBgContainer: '#f6ffed',
  },
}}

>





);

  1. React + antd 4.X 更改主题色-定制主题
    解决方案-配置 less 变量文件
    在项目入口的index.less引入并写入下面代码来更改主题,建立一个单独的 less 变量文件,引入这个文件覆盖 antd.less 里的变量

@import '~antd/es/style/themes/default.less';
@import '~antd/dist/antd.less'; // 引入官方提供的 less 样式入口文件
// 下面是你的自定义主题颜色
@primary-color: rgb(201, 75, 24); // primary color for all components
@link-color: rgb(201, 75, 24); // link color
@success-color: #52c41a; // success state color
@warning-color: #faad14; // warning state color
@error-color: #f5222d; // error state color
@font-size-base: 14px; // major text font size
@heading-color: rgba(0, 0, 0, 0.85); // heading text color
@text-color: rgba(0, 0, 0, 0.65); // major text color
@text-color-secondary: rgba(0, 0, 0, 0.45); // secondary text color
@disabled-color: rgba(0, 0, 0, 0.25); // disable state color
@border-radius-base: 2px; // major border radius
@border-color-base: #d9d9d9; // major border color
@box-shadow-base: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08),
0 9px 28px 8px rgba(0, 0, 0, 0.05); // major shadow for layers

  1. React报错ResizeObserver loop completed with undelivered notifications.
    ResizeObserver loop completed with undelivered notifications.
    at handleError (http://localhost:3000/js/main.js:2161:58)
    at http://localhost:3000/js/main.js:2180:7

问题分析
antd 的 table 组件容易报这个错误
报错的原因:在页面绘制的时候,页面突然发生调整大小的事件,导致了样式和布局都需要重新评估,这个调整大小导致的布局变化,将延迟到下一帧来绘制。
其他分析感兴趣的小伙伴可以自行查询,这里不做过多解释啦~~
解决方案
简单粗暴解决:所以在报错组件里面,或者全局,添加隐藏这个浮层的样式

//antd组件内 ResizeObserver loop limit exceeded报错隐藏
//代码效果参考:https://vipwb.com/h-j-g-g-z-d-q/49894.html
//代码效果参考:https://vipwb.com/weibao/49896.html
//代码效果参考:https://vipwb.com/shebei/49897.html
//代码效果参考:https://vipwb.com/zhinen/49898.html

webpack-dev-server-client-overlay {

display: none !important;
}

  1. React designable formily antd form designer 很多cdn.jsdelivr.net资源找不到的问题,cdn.jsdelivr.net访问报错
相关文章
|
4天前
|
前端开发 JavaScript 开发者
React 按钮组件 Button
本文介绍了 React 中按钮组件的基础概念,包括基本的 `&lt;button&gt;` 元素和自定义组件。详细探讨了事件处理、参数传递、状态管理、样式设置和可访问性优化等常见问题及其解决方案,并提供了代码示例。帮助开发者避免易错点,提升按钮组件的使用体验。
111 77
|
2天前
|
存储 前端开发 UED
React 面包屑组件 Breadcrumb 详解
面包屑导航是现代Web应用中常见的UI元素,帮助用户了解当前位置并快速返回上级页面。本文介绍如何使用React构建面包屑组件,涵盖基本概念、实现方法及常见问题。通过函数式组件和钩子,结合React Router动态生成路径,处理嵌套路由,并确保可访问性。示例代码展示了静态和动态面包屑的实现,帮助开发者提升用户体验。
96 73
|
5天前
|
前端开发 UED 开发者
React 对话框组件 Dialog
本文详细介绍了如何在 React 中实现一个功能完备的对话框组件(Dialog),包括基本用法、常见问题及其解决方案,并通过代码案例进行说明。从安装依赖到创建组件、添加样式,再到解决关闭按钮失效、背景点击无效、键盘导航等问题,最后还介绍了如何添加动画效果和处理异步关闭操作。希望本文能帮助你在实际开发中更高效地使用 React 对话框组件。
103 75
|
10天前
|
前端开发 Java API
React 进度条组件 ProgressBar 详解
本文介绍了如何在 React 中创建进度条组件,从基础实现到常见问题及解决方案,包括动态更新、状态管理、性能优化、高级动画效果和响应式设计等方面,帮助开发者构建高效且用户体验良好的进度条。
38 18
|
23天前
|
前端开发 API 开发者
React 文件上传组件 File Upload
本文详细介绍了如何在 React 中实现文件上传组件,从基础的文件选择和上传到服务器,再到解决文件大小、类型限制、并发上传等问题,以及实现多文件上传、断点续传和文件预览等高级功能,帮助开发者高效构建可靠的应用。
49 12
|
18天前
|
存储 前端开发 JavaScript
React 表单输入组件 Input:常见问题、易错点及解决方案
本文介绍了在 React 中使用表单输入组件 `Input` 的基础概念,包括受控组件与非受控组件的区别及其优势。通过具体代码案例,详细探讨了创建受控组件、处理多个输入字段、输入验证和格式化的方法,并指出了常见易错点及避免方法,旨在提升表单的健壮性和用户体验。
30 4
|
22天前
|
前端开发 JavaScript API
React 文件下载组件:File Download
本文详细介绍了如何在React应用中实现文件下载组件,包括基本概念、实现步骤和代码示例。同时,探讨了常见问题如文件类型不匹配、文件名乱码等及其解决方法,旨在提升用户体验和代码可维护性。
41 2
|
1月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
77 9
|
2月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
28天前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
102 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生