1- import  {  EMPTY_OBJ ,  NULL  }  from  './constants' ; 
1+ import  {  EMPTY_OBJ ,  MODE_HYDRATE ,   NULL  }  from  './constants' ; 
22import  {  commitRoot ,  diff  }  from  './diff/index' ; 
33import  {  createElement ,  Fragment  }  from  './create-element' ; 
44import  options  from  './options' ; 
@@ -8,21 +8,17 @@ import { slice } from './util';
88 * Render a Preact virtual node into a DOM element 
99 * @param  {import('./internal').ComponentChild } vnode The virtual node to render 
1010 * @param  {import('./internal').PreactElement } parentDom The DOM element to render into 
11-  * @param  {import('./internal').PreactElement | object } [replaceNode] Optional: Attempt to re-use an 
12-  * existing DOM tree rooted at `replaceNode` 
1311 */ 
14- export  function  render ( vnode ,  parentDom ,   replaceNode )  { 
12+ export  function  render ( vnode ,  parentDom )  { 
1513	// https://github.com/preactjs/preact/issues/3794 
1614	if  ( parentDom  ==  document )  { 
1715		parentDom  =  document . documentElement ; 
1816	} 
1917
2018	if  ( options . _root )  options . _root ( vnode ,  parentDom ) ; 
2119
22- 	// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in 
23- 	// hydration mode or not by passing the `hydrate` function instead of a DOM 
24- 	// element.. 
25- 	let  isHydrating  =  replaceNode  ===  hydrate ; 
20+ 	// @ts -expect-error 
21+ 	let  isHydrating  =  ! ! ( vnode  &&  vnode . _flags  &  MODE_HYDRATE ) ; 
2622
2723	// To be able to support calling `render()` multiple times on the same 
2824	// DOM node, we need to obtain a reference to the previous tree. We do 
@@ -65,5 +61,7 @@ export function render(vnode, parentDom, replaceNode) {
6561 * @param  {import('./internal').PreactElement } parentDom The DOM element to update 
6662 */ 
6763export  function  hydrate ( vnode ,  parentDom )  { 
68- 	render ( vnode ,  parentDom ,  hydrate ) ; 
64+ 	// @ts -expect-error 
65+ 	vnode . _flags  |=  MODE_HYDRATE ; 
66+ 	render ( vnode ,  parentDom ) ; 
6967} 
0 commit comments