jk4235
jk4235
通常来说子应用增加`base: ‘/’`就好了 https://github.com/umijs/umi/issues/8838#issuecomment-1207594907 你可以参考上面这个链接里的配置,我之前试了没什么问题
之前也遇到过,我直接取消了使用antd插件,自己直接在项目里使用antd 一切都正常了 antd已经支持tree shaking,所以也不需要这个插件来动态引入了 如果你是用的@umi/preset的话,需要自己写个插件,跳过内置的antd插件 ```js export default (api) => { api.describe({...something}) // 跳过内置的antd插件 api.skipPlugins(["@umijs/plugin-antd"]); } ```
我看了下,现在是把子应用的window.onxxx直接指向主应用的window.onxxx 这样多个子应用同时用到window.onxxx的话会有问题,没有隔离 为什么不直接挂在iframeWindow上呢? 此外可能需要在mount和unmount的时候手动处理一些事件了
> 这个地方估计要框架维护一个针对 load 事件、domContentLoaded事件之类的事件列表,进行手动触发。 对,我的意思就是直接挂在iframeWindow上,然后手动在对应的生命周期里invoke,避免多个子应用互相干扰
用了很长一段时间cypress,还是比较好用的,更新也很快,定期release
@juanjoDiaz @snickell that is really nice work thanks! hope this PR would be merged soon
```ts import { loadMicroApp } from "qiankun"; const app = loadMicroApp( { name: appName, entry: resourceEntry, container: appContainer, props: appProps, }, { singular: true, sandbox: { experimentalStyleIsolation: true } }...
我是能拿到iframeReady这个方法,但是这个方法里面调用的变量状态不对,导致react-error-overlay弹出的iframe没有消失,挡住了整个页面 debug看下来应该是修改主应用热更新的时候,子应用也trigger了热更新,但是一些闭包变量读取出来不对(因为只修改了主应用,子应用是不应该出发更新的,一些flag变量没有变更) 我想了一个比较hack的方法 在子应用里写一个umi插件 ```js // plugins/dev-scripts.js 如果你项目用ts,这里也要写成js文件 export default (api) => { api.describe({ key: "modifyDevScripts", config: { schema(joi) { return joi.object(); }, }, enableBy: api.env === "development", }); api.register({...
我感觉这个不太适合做到组件内,对于固定列/固定表头/表头分组之类的实现可能都会有冲突.后续维护目测会比较麻烦.真的有需求可以用Sortable.js自己包裹下,根据自己的业务去实现就好了.真实业务中我更推荐提供一个表格列配置选项,这些配置用户配置过一次之后多半是不会再动了.
一个比location.reload稍微好一些的解决方案, 整个子应用会rerender, location.reload实在是太慢了 .umirc.ts ```TypeScript fastRefresh: false, test: false, ``` .umirc.dev.ts ```TypeScript import { defineConfig } from "@umijs/max"; export default defineConfig({ define: { "process.env": { SOCKET_SERVER: "http://localhost:8002", // 这里换成子应用实际的端口 },...