关于react19版本更新后部分组件无法正常使用的问题

原因

我们在使用像是提示、弹窗等静态方法时,会报错reactRender is not a function;这是由于 React 19 调整了 react-dom 的导出方式,导致无法直接使用 ReactDOM.render 方法

解决方法(一)

降级到React 18.3.0

运行命令:

npm i react@18.3.0 react-dom@18.3.0

解决方法(二)

如果使用的是ant-design;可以安装兼容包

npm install @ant-design/v5-patch-for-react-19 --save

在应用入口处引入兼容包

import '@ant-design/v5-patch-for-react-19';

解决方法(三)

如果使用的是:antd-mobile;

使用unstableSetRender 为底层注册方法,允许开发者修改 ReactDOM 的渲染方法。在你的应用入口处写入:

js 复制代码
 import { unstableSetRender } from 'antd-mobile';
 import { createRoot } from 'react-dom/client';

 unstableSetRender((node, container) => {
   container._reactRoot ||= createRoot(container);
   const root = container._reactRoot;
   root.render(node);
   return async () => {
     await new Promise((resolve) => setTimeout(resolve, 0));
     root.unmount();
   };
 });

注意:只能用于antd-mobile@^5.39.1;但现在还是5.39.0,请等待官方发版本

相关推荐
阿蒙Amon2 小时前
TypeScript学习-第9章:类型断言与类型缩小
javascript·学习·typescript
福大大架构师每日一题2 小时前
agno v2.4.7发布!新增Else条件分支、AWS Bedrock重排器、HITL等重大升级全解析
javascript·云计算·aws
.清和.2 小时前
【js】Javascript事件循环机制
开发语言·javascript·ecmascript
心柠2 小时前
原型和原型链
开发语言·javascript·ecmascript
东东5163 小时前
校园短期闲置资源置换平台 ssm+vue
java·前端·javascript·vue.js·毕业设计·毕设
悟能不能悟3 小时前
VUE的国际化,怎么实现
前端·javascript·vue.js
2601_949480063 小时前
Flutter for OpenHarmony音乐播放器App实战11:创建歌单实现
开发语言·javascript·flutter
Mr Xu_3 小时前
解决 Vue + Axios 热更新导致响应拦截器重复注册的问题
前端·javascript·vue.js
Coder_preston3 小时前
JavaScript学习指南
开发语言·javascript·ecmascript
Jinuss3 小时前
源码分析之React中Scheduler调度器的最小二叉堆
javascript·算法·react.js