mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dfc782599b |
@@ -373,6 +373,9 @@ export class Component<Props extends {} = any, T extends Env = Env> {
|
|||||||
async render(force: boolean = false): Promise<void> {
|
async render(force: boolean = false): Promise<void> {
|
||||||
const __owl__ = this.__owl__;
|
const __owl__ = this.__owl__;
|
||||||
const currentFiber = __owl__.currentFiber;
|
const currentFiber = __owl__.currentFiber;
|
||||||
|
if (!__owl__.vnode && !currentFiber) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (currentFiber && !currentFiber.isRendered && !currentFiber.isCompleted) {
|
if (currentFiber && !currentFiber.isRendered && !currentFiber.isCompleted) {
|
||||||
return scheduler.addFiber(currentFiber.root);
|
return scheduler.addFiber(currentFiber.root);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,6 +338,22 @@ describe("unmounting and remounting", () => {
|
|||||||
expect(detachedDiv.innerHTML).toBe("<div>2</div>");
|
expect(detachedDiv.innerHTML).toBe("<div>2</div>");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("change state and render while not mounted ", async () => {
|
||||||
|
class App extends Component {
|
||||||
|
static template = xml`<div><t t-esc="state.val"/></div>`;
|
||||||
|
state = useState({ val: 1 });
|
||||||
|
}
|
||||||
|
|
||||||
|
const app = new App(null);
|
||||||
|
|
||||||
|
app.state.val = 2; // will call the render method (before being mounted)
|
||||||
|
await nextTick();
|
||||||
|
|
||||||
|
await app.mount(fixture);
|
||||||
|
|
||||||
|
expect(fixture.innerHTML).toBe("<div>2</div>");
|
||||||
|
});
|
||||||
|
|
||||||
test("destroy and change state after mounted in detached dom", async () => {
|
test("destroy and change state after mounted in detached dom", async () => {
|
||||||
class App extends Component {
|
class App extends Component {
|
||||||
static template = xml`<div><t t-esc="state.val"/></div>`;
|
static template = xml`<div><t t-esc="state.val"/></div>`;
|
||||||
|
|||||||
Reference in New Issue
Block a user