-
-
Notifications
You must be signed in to change notification settings - Fork 2k
/
Copy pathrender.js
31 lines (29 loc) · 919 Bytes
/
render.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { createRoot } from './create-root';
/**
* Render a Preact virtual node into a DOM element
* @param {import('./internal').ComponentChild} vnode The virtual node to render
* @param {import('./internal').PreactElement} parentDom The DOM element to
* render into
*/
export function render(vnode, parentDom) {
let root = parentDom && parentDom._root;
if (!root) {
root = createRoot(parentDom);
}
if (parentDom) parentDom._root = root;
root.render(vnode);
}
/**
* Update an existing DOM element with data from a Preact virtual node
* @param {import('./internal').ComponentChild} vnode The virtual node to render
* @param {import('./internal').PreactElement} parentDom The DOM element to
* update
*/
export function hydrate(vnode, parentDom) {
let root = parentDom && parentDom._root;
if (!root) {
root = createRoot(parentDom);
}
if (parentDom) parentDom._root = root;
root.hydrate(vnode);
}