fix: fix the performance issue of batch call executeTransaction

This commit is contained in:
liujuping 2022-11-22 16:38:01 +08:00 committed by LeoYuan 袁力皓
parent b18b70461c
commit 407294dff3
3 changed files with 5 additions and 2 deletions

View File

@ -69,6 +69,7 @@ import { LiveEditing } from './live-editing/live-editing';
import { Project } from '../project';
import { Scroller } from '../designer/scroller';
import { isElementNode, isDOMNodeVisible } from '../utils/misc';
import { debounce } from 'lodash';
export interface LibraryItem extends Package{
package: string;
@ -205,8 +206,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
transactionManager.onStartTransaction(() => {
this.stopAutoRepaintNode();
}, TransitionType.REPAINT);
// 防止批量调用 transaction 时,执行多次 rerender
const rerender = debounce(this.rerender.bind(this), 28);
transactionManager.onEndTransaction(() => {
this.rerender();
rerender();
this.enableAutoRepaintNode();
}, TransitionType.REPAINT);
}

View File

@ -26,4 +26,4 @@ export * from './node-helper';
export * from './clone-enumerable-property';
export * from './logger';
export * as css from './css-helper';
export { transactionManager } from './start-transaction';
export { transactionManager } from './transaction-manager';