Skip to content

Commit

Permalink
🐛 record global mutation in addons while remounting (#847)
Browse files Browse the repository at this point in the history
  • Loading branch information
kuitos committed Aug 10, 2020
1 parent f6948a6 commit f7009fb
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/addons/runtimePublicPath.ts
Expand Up @@ -4,7 +4,7 @@
*/
import { FrameworkLifeCycles } from '../interfaces';

const rawPublicPath = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || '/';
const rawPublicPath = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;

export default function getAddOn(global: Window, publicPath = '/'): FrameworkLifeCycles<any> {
let hasMountedOnce = false;
Expand Down
2 changes: 1 addition & 1 deletion src/loader.ts
Expand Up @@ -327,9 +327,9 @@ export async function loadApp<T extends object>(
element = element || createElement(appContent, strictStyleIsolation);
render({ element, loading: true }, 'mounting');
},
mountSandbox,
// exec the chain after rendering to keep the behavior with beforeLoad
async () => execHooksChain(toArray(beforeMount), app, global),
mountSandbox,
async props => mount({ ...props, container: containerGetter(), setGlobalState, onGlobalStateChange }),
// 应用 mount 完成后结束 loading
async () => render({ element, loading: false }, 'mounted'),
Expand Down
10 changes: 5 additions & 5 deletions src/sandbox/index.ts
Expand Up @@ -63,6 +63,11 @@ export function createSandbox(
* 也可能是从 unmount 之后再次唤醒进入 mount
*/
async mount() {
/* ------------------------------------------ 因为有上下文依赖(window),以下代码执行顺序不能变 ------------------------------------------ */

/* ------------------------------------------ 1. 启动/恢复 沙箱------------------------------------------ */
sandbox.active();

const sideEffectsRebuildersAtBootstrapping = sideEffectsRebuilders.slice(0, bootstrappingFreers.length);
const sideEffectsRebuildersAtMounting = sideEffectsRebuilders.slice(bootstrappingFreers.length);

Expand All @@ -71,11 +76,6 @@ export function createSandbox(
sideEffectsRebuildersAtBootstrapping.forEach(rebuild => rebuild());
}

/* ------------------------------------------ 因为有上下文依赖(window),以下代码执行顺序不能变 ------------------------------------------ */

/* ------------------------------------------ 1. 启动/恢复 沙箱------------------------------------------ */
sandbox.active();

/* ------------------------------------------ 2. 开启全局变量补丁 ------------------------------------------*/
// render 沙箱启动时开始劫持各类全局监听,尽量不要在应用初始化阶段有 事件监听/定时器 等副作用
mountingFreers = patchAtMounting(appName, elementGetter, sandbox, singular, scopedCSS, excludeAssetFilter);
Expand Down
2 changes: 1 addition & 1 deletion src/sandbox/proxySandbox.ts
Expand Up @@ -109,8 +109,8 @@ export default class ProxySandbox implements SandBox {
sandboxRunning = true;

active() {
if (!this.sandboxRunning) activeSandboxCount++;
this.sandboxRunning = true;
activeSandboxCount++;
}

inactive() {
Expand Down
3 changes: 1 addition & 2 deletions src/sandbox/snapshotSandbox.ts
Expand Up @@ -23,7 +23,7 @@ export default class SnapshotSandbox implements SandBox {

type: SandBoxType;

sandboxRunning = false;
sandboxRunning = true;

private windowSnapshot!: Window;

Expand All @@ -33,7 +33,6 @@ export default class SnapshotSandbox implements SandBox {
this.name = name;
this.proxy = window;
this.type = SandBoxType.Snapshot;
this.active();
}

active() {
Expand Down

0 comments on commit f7009fb

Please sign in to comment.