微前端中如何正确共享 React 依赖避免重复加载?
我用 qiankun 搭了个微前端项目,主应用和子应用都用了 React 18,但发现子应用加载时又把 React 打包进去了,导致页面报错说存在多个 React 实例。
我试过在 webpack 里配 externals 把 React 排除,也按文档在主应用挂载了 window.React = React,但子应用还是报 Invalid hook call。是不是哪里配置漏了?
这是我的子应用 webpack 配置片段:
externals: {
react: 'React',
'react-dom': 'ReactDOM'
}
改成这样,用函数形式的 externals 动态获取:
同时主应用挂载方式改成这样,确保在 qiankun 启动前就挂载好:
如果还不行,最稳的方式是主应用直接用 script 标签加载 React CDN,这样全局变量在沙箱创建前就存在了,子应用 externals 配置不用改。