// @ts-nocheck import { Component } from 'react'; import { ApplyPluginsType } from 'umi'; import dva from 'dva'; // @ts-ignore import createLoading from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/node_modules/dva-loading/dist/index.esm.js'; import { plugin, history } from '../core/umiExports'; import ModelDefault0 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/models/default.js'; import ModelEditorModal1 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/editor/models/editorModal.js'; import ModelEditorPcModel2 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/editor/models/editorPcModel.ts'; import ModelEditorModal3 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/ide/models/editorModal.js'; import ModelEditorModal4 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/ideTemplateEditor/models/editorModal.js'; import ModelEditorPcModel5 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/templateEditor/models/editorPcModel.ts'; import ModelEditorTempModal6 from '/Users/zhaolinxiao/workspace/lwj-common-frontend/lwj-react/lwj-editor/src/pages/templateEditor/models/editorTempModal.js'; let app:any = null; export function _onCreate(options = {}) { const runtimeDva = plugin.applyPlugins({ key: 'dva', type: ApplyPluginsType.modify, initialValue: {}, }); app = dva({ history, ...(runtimeDva.config || {}), // @ts-ignore ...(typeof window !== 'undefined' && window.g_useSSR ? { initialState: window.g_initialProps } : {}), ...(options || {}), }); app.use(createLoading()); (runtimeDva.plugins || []).forEach((plugin:any) => { app.use(plugin); }); app.model({ namespace: 'default', ...ModelDefault0 }); app.model({ namespace: 'editorModal', ...ModelEditorModal1 }); app.model({ namespace: 'editorPcModel', ...ModelEditorPcModel2 }); app.model({ namespace: 'editorModal', ...ModelEditorModal3 }); app.model({ namespace: 'editorModal', ...ModelEditorModal4 }); app.model({ namespace: 'editorPcModel', ...ModelEditorPcModel5 }); app.model({ namespace: 'editorTempModal', ...ModelEditorTempModal6 }); return app; } export function getApp() { return app; } /** * whether browser env * * @returns boolean */ function isBrowser(): boolean { return typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' } export class _DvaContainer extends Component { constructor(props: any) { super(props); // run only in client, avoid override server _onCreate() if (isBrowser()) { _onCreate() } } componentWillUnmount() { let app = getApp(); app._models.forEach((model:any) => { app.unmodel(model.namespace); }); app._models = []; try { // 释放 app,for gc // immer 场景 app 是 read-only 的,这里 try catch 一下 app = null; } catch(e) { console.error(e); } } render() { let app = getApp(); app.router(() => this.props.children); return app.start()(); } }