diff --git a/libs/horizon/src/renderer/submit/HookEffectHandler.ts b/libs/horizon/src/renderer/submit/HookEffectHandler.ts index c66675ca..31e93db0 100644 --- a/libs/horizon/src/renderer/submit/HookEffectHandler.ts +++ b/libs/horizon/src/renderer/submit/HookEffectHandler.ts @@ -7,9 +7,6 @@ import type { Effect as HookEffect, EffectList, } from '../hooks/HookType'; -import { - callRenderQueueImmediate, -} from '../taskExecutor/RenderQueue'; import {runAsync} from '../taskExecutor/TaskExecutor'; import { copyExecuteMode, InRender, setExecuteMode,changeMode @@ -20,7 +17,6 @@ let hookEffects: Array = []; let hookRemoveEffects: Array = []; // 是否正在异步调度effects let isScheduling: boolean = false; -let hookEffectRoot: VNode | null = null; export function setSchedulingEffects(value) { isScheduling = value; @@ -29,13 +25,6 @@ export function isSchedulingEffects() { return isScheduling; } -export function setHookEffectRoot(root: VNode | null) { - hookEffectRoot = root; -} -export function getHookEffectRoot() { - return hookEffectRoot; -} - export function callUseEffects(vNode: VNode) { const effectList: EffectList = vNode.effectList; @@ -58,20 +47,13 @@ export function callUseEffects(vNode: VNode) { } export function runAsyncEffects() { - if (hookEffectRoot === null) { - return false; - } - - const root = hookEffectRoot; - hookEffectRoot = null; - const preMode = copyExecuteMode(); changeMode(InRender, true); // 调用effect destroy const removeEffects = hookRemoveEffects; hookRemoveEffects = []; - removeEffects.forEach(({effect, vNode}) => { + removeEffects.forEach(({effect}) => { const destroy = effect.removeEffect; effect.removeEffect = undefined; @@ -87,7 +69,7 @@ export function runAsyncEffects() { // 调用effect create const createEffects = hookEffects; hookEffects = []; - createEffects.forEach(({effect, vNode}) => { + createEffects.forEach(({effect}) => { try { const create = effect.effect; @@ -98,10 +80,6 @@ export function runAsyncEffects() { }); setExecuteMode(preMode); - - callRenderQueueImmediate(); - - return true; } // 在销毁vNode的时候调用remove @@ -131,10 +109,10 @@ export function callUseLayoutEffectRemove(vNode: VNode) { const effectList: EffectList = vNode.effectList; const layoutLabel = EffectConstant.LayoutEffect | EffectConstant.DepsChange; - effectList.forEach(item => { - if ((item.effectConstant & layoutLabel) === layoutLabel) { - const remove = item.removeEffect; - item.removeEffect = undefined; + effectList.forEach(effect => { + if ((effect.effectConstant & layoutLabel) === layoutLabel) { + const remove = effect.removeEffect; + effect.removeEffect = undefined; if (typeof remove === 'function') { remove(); } @@ -147,10 +125,10 @@ export function callUseLayoutEffectCreate(vNode: VNode) { const effectList: EffectList = vNode.effectList; const layoutLabel = EffectConstant.LayoutEffect | EffectConstant.DepsChange; - effectList.forEach(item => { - if ((item.effectConstant & layoutLabel) === layoutLabel) { - const create = item.effect; - item.removeEffect = create(); + effectList.forEach(effect => { + if ((effect.effectConstant & layoutLabel) === layoutLabel) { + const create = effect.effect; + effect.removeEffect = create(); } }); } diff --git a/libs/horizon/src/renderer/submit/Submit.ts b/libs/horizon/src/renderer/submit/Submit.ts index fe1018c3..5b3f852c 100644 --- a/libs/horizon/src/renderer/submit/Submit.ts +++ b/libs/horizon/src/renderer/submit/Submit.ts @@ -22,7 +22,7 @@ import { } from '../ExecuteMode'; import { isSchedulingEffects, - setSchedulingEffects, setHookEffectRoot, + setSchedulingEffects, } from './HookEffectHandler'; import {getStartVNode} from '../GlobalVar'; @@ -67,9 +67,6 @@ export function submitToRender(treeRoot) { if (isSchedulingEffects()) { setSchedulingEffects(false); - - // 记录root,说明这个root有副作用要执行 - setHookEffectRoot(treeRoot); } // 统计root同步重渲染的次数,如果太多可能是无线循环