Skip to content

Commit e1d6f9b

Browse files
committed
chore(education); faster and modern hydration
1 parent c2bcf33 commit e1d6f9b

File tree

1 file changed

+3
-22
lines changed

1 file changed

+3
-22
lines changed
Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { hydrate } from "react-dom";
21
import { createElement } from "react";
2+
import { hydrateRoot } from 'react-dom/client';
33

44
export function ktlHelpers() {
55
const comment = " ktl_component: ";
@@ -25,26 +25,7 @@ export function ktlHelpers() {
2525

2626
export function initComponent(node, Component, props) {
2727
const fake_node = document.createElement('div');
28-
hydrate(createElement(Component, props), fake_node);
28+
fake_node.appendChild(node.cloneNode(true));
2929
node.replaceWith(fake_node);
30-
}
31-
32-
export function replaceByComponent(node, Component, props) {
33-
const parentNode = node.parentNode;
34-
const fakeNode = document.createElement('div');
35-
36-
hydrate(createElement(Component, props), fakeNode);
37-
38-
let renderedNode = fakeNode.lastChild;
39-
40-
if (fakeNode.children.length === 1) {
41-
node.replaceWith(renderedNode);
42-
return;
43-
}
44-
45-
do {
46-
parentNode.insertBefore(node, renderedNode);
47-
} while (renderedNode = renderedNode.previousSibling)
48-
49-
parentNode.removeChild(node);
30+
hydrateRoot(fake_node, createElement(Component, props));
5031
}

0 commit comments

Comments
 (0)