mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
|
|
// This example shows all the possible lifecycle hooks
|
||
|
|
//
|
||
|
|
// The root component controls a sub component (DemoComponent). It logs all its lifecycle
|
||
|
|
// methods in the console. Try modifying its state by clicking on it, or by
|
||
|
|
// clicking on the two main buttons, and look into the console to see what
|
||
|
|
// happens.
|
||
|
|
import {
|
||
|
|
Component,
|
||
|
|
useState,
|
||
|
|
mount,
|
||
|
|
useComponent,
|
||
|
|
onWillStart,
|
||
|
|
onMounted,
|
||
|
|
onWillUnmount,
|
||
|
|
onWillUpdateProps,
|
||
|
|
onPatched,
|
||
|
|
onWillPatch,
|
||
|
|
onWillRender,
|
||
|
|
onRendered,
|
||
|
|
onWillDestroy,
|
||
|
|
} from "@odoo/owl";
|
||
|
|
|
||
|
|
function useLogLifecycle() {
|
||
|
|
const component = useComponent();
|
||
|
|
const name = component.constructor.name;
|
||
|
|
onWillStart(() => console.log(`${name}:willStart`));
|
||
|
|
onMounted(() => console.log(`${name}:mounted`));
|
||
|
|
onWillUpdateProps(() => console.log(`${name}:willUpdateProps`));
|
||
|
|
onWillRender(() => console.log(`${name}:willRender`));
|
||
|
|
onRendered(() => console.log(`${name}:rendered`));
|
||
|
|
onWillPatch(() => console.log(`${name}:willPatch`));
|
||
|
|
onPatched(() => console.log(`${name}:patched`));
|
||
|
|
onWillUnmount(() => console.log(`${name}:willUnmount`));
|
||
|
|
onWillDestroy(() => console.log(`${name}:willDestroy`));
|
||
|
|
}
|
||
|
|
|
||
|
|
class DemoComponent extends Component {
|
||
|
|
static template = "DemoComponent";
|
||
|
|
|
||
|
|
setup() {
|
||
|
|
useLogLifecycle();
|
||
|
|
this.state = useState({ n: 0 });
|
||
|
|
}
|
||
|
|
increment() {
|
||
|
|
this.state.n++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class Root extends Component {
|
||
|
|
static template = "Root";
|
||
|
|
static components = { DemoComponent };
|
||
|
|
|
||
|
|
setup() {
|
||
|
|
useLogLifecycle();
|
||
|
|
this.state = useState({ n: 0, flag: true });
|
||
|
|
}
|
||
|
|
|
||
|
|
increment() {
|
||
|
|
this.state.n++;
|
||
|
|
}
|
||
|
|
|
||
|
|
toggleSubComponent() {
|
||
|
|
this.state.flag = !this.state.flag;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
mount(Root, document.body, { templates: TEMPLATES, dev: true });
|
||
|
|
|