Skip to content

Commit 8bce893

Browse files
committed
feat: stash
1 parent 7f25b5b commit 8bce893

9 files changed

Lines changed: 786 additions & 33 deletions

File tree

demo/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class MyComponent extends QuarkElement {
3535
};
3636

3737
componentDidMount() {
38-
console.log("dom loaded!")
38+
console.log("dom loaded!", 'parent')
3939
// ...
4040
}
4141

demo/src/pages/child-second.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Child2 extends QuarkElement {
1616
])
1717

1818
componentDidMount() {
19+
console.log('dom loaded!', 'child-second')
1920
}
2021

2122
render() {

demo/src/pages/child.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Child1 extends QuarkElement {
1717

1818

1919
componentDidMount() {
20+
console.log('dom loaded!', 'child')
2021
}
2122

2223
goToLink() {

demo/src/pages/home.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class MyComponent extends QuarkElement {
1414

1515

1616
componentDidMount() {
17-
console.log("dom loaded!")
17+
console.log("dom loaded!", 'home')
1818
// ...
1919
}
2020

demo/src/pages/sub.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class MyComponent extends QuarkElement {
1414

1515

1616
componentDidMount() {
17-
console.log("dom loaded!")
17+
console.log("dom loaded!", 'sub')
1818
// ...
1919
}
2020

demo4gluang/src/gluang.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ export const connectStore = superclass => {
1818

1919
// 区分 lit(lit 中存在 performUpdate)
2020
if(!this.performUpdate) {
21+
console.log('before update')
2122
this.update(); // quarkc 中先去执行
2223
}
2324
}
2425

2526
// Your framework need this function to init observe state
2627
update() {
28+
console.log('gluang update')
2729
stateRecorder.start();
2830
super.update();
2931
this._initStateObservers();

packages/core/src/index.ts

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -468,15 +468,15 @@ export class QuarkElement extends HTMLElement implements ReactiveControllerHost
468468

469469
// Reserve, may expand in the future
470470
requestUpdate() {
471-
// this._render();
472-
// this._controllers?.forEach((c) => c.hostUpdated?.());
473-
this._renderWatcher?.update();
471+
console.log('requestUpdate')
472+
this.getOrInitRenderWatcher().update();
474473
}
475474

476475
// Reserve, may expand in the future
477476
update() {
477+
console.log('update')
478478
// this._render()
479-
this._renderWatcher?.update();
479+
this.getOrInitRenderWatcher().update()
480480
}
481481

482482
$on = (eventName: string, eventHandler: EventHandler, el?: Element) => {
@@ -531,25 +531,39 @@ export class QuarkElement extends HTMLElement implements ReactiveControllerHost
531531
return "" as any;
532532
}
533533

534+
private getOrInitRenderWatcher() {
535+
if (!this._renderWatcher) {
536+
console.error('getOrInitRenderWatcher if', this);
537+
let initRender = true;
538+
this._renderWatcher = new Watcher(
539+
this,
540+
() => {
541+
console.error('render watcher callback')
542+
this._render();
543+
const renderCbType = !initRender ? 'hostUpdated' : 'hostMounted';
544+
this._controllers?.forEach((c) => c[renderCbType]?.());
545+
546+
if (initRender) {
547+
initRender = false;
548+
549+
if (isFunction(this.componentDidMount)) {
550+
this.componentDidMount();
551+
}
552+
} else {
553+
this.flushUpdatedQueue();
554+
}
555+
},
556+
{ render: true },
557+
);
558+
}
559+
560+
return this._renderWatcher
561+
}
562+
534563
connectedCallback() {
535564
this._updateProps();
536565
this._controllers?.forEach((c) => c.hostConnected?.());
537-
let initRender = true;
538-
this._renderWatcher = new Watcher(
539-
this,
540-
() => {
541-
this._render();
542-
const renderCbType = !initRender ? 'hostUpdated' : 'hostMounted';
543-
this._controllers?.forEach((c) => c[renderCbType]?.());
544-
initRender = false;
545-
},
546-
{ render: true },
547-
);
548-
this.flushUpdatedQueue();
549-
550-
if (isFunction(this.componentDidMount)) {
551-
this.componentDidMount();
552-
}
566+
this.getOrInitRenderWatcher();
553567
}
554568

555569
/** log old 'false' attribute value before resetting and removing it */

packages/router/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"urlpattern-polyfill": "^9.0.0"
4242
},
4343
"peerDependencies": {
44-
"quarkc": "^1.0.41"
44+
"quarkc": "^1.0.40"
4545
},
4646
"devDependencies": {
4747
"@babel/core": "^7.22.5",

0 commit comments

Comments
 (0)