原因
我们在使用像是提示、弹窗等静态方法时,会报错reactRender is not a function
;这是由于 React 19 调整了 react-dom 的导出方式,导致无法直接使用 ReactDOM.render 方法
解决方法(一)
降级到React 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,请等待官方发版本