add possibility to deep rendering

This commit is contained in:
Géry Debongnie
2021-11-18 21:58:43 +01:00
parent dfead2836e
commit d8201b8955
5 changed files with 69 additions and 4 deletions
+2 -2
View File
@@ -28,7 +28,7 @@ export class Component {
setup() {}
render(): Promise<void> {
return this.__owl__.render();
render(deep: boolean = false): Promise<void> {
return this.__owl__.render(deep);
}
}
+3 -2
View File
@@ -48,7 +48,7 @@ export function component(
const parentFiber = ctx.fiber!;
if (node) {
if (hasSlots || arePropsDifferent(node.component.props, props)) {
if (hasSlots || parentFiber.deep || arePropsDifferent(node.component.props, props)) {
node.updateAndRender(props, parentFiber);
}
} else {
@@ -148,7 +148,7 @@ export class ComponentNode<T extends typeof Component = typeof Component>
}
}
async render() {
async render(deep: boolean = false) {
let fiber = this.fiber;
if (fiber && !fiber.bdom && !fibersInError.has(fiber)) {
return fiber.root.promise;
@@ -158,6 +158,7 @@ export class ComponentNode<T extends typeof Component = typeof Component>
return;
}
fiber = makeRootFiber(this);
fiber.deep = deep;
this.app.scheduler.addFiber(fiber);
await Promise.resolve();
if (this.status === STATUS.DESTROYED) {
+1
View File
@@ -67,6 +67,7 @@ export class Fiber {
parent: Fiber | null;
children: Fiber[] = [];
appliedToDom = false;
deep: boolean = false;
constructor(node: ComponentNode, parent: Fiber | null) {
this.node = node;