@@ -2,7 +2,7 @@ import ReactDOMServer from 'react-dom/server'
2
2
import ReactDOM from 'react-dom'
3
3
import { act } from 'react-dom/test-utils'
4
4
5
- import { RendererProps , RendererOptions } from '../types/react'
5
+ import { RendererOptions , RendererProps } from '../types/react'
6
6
7
7
import { createRenderHook } from '../core'
8
8
import { createTestHarness } from '../helpers/createTestHarness'
@@ -12,44 +12,44 @@ function createServerRenderer<TProps, TResult>(
12
12
{ wrapper } : RendererOptions < TProps >
13
13
) {
14
14
let renderProps : TProps | undefined
15
- let hydrated = false
16
- const container = document . createElement ( 'div' )
15
+ let container : HTMLDivElement | undefined
16
+ let serverOutput : string = ''
17
17
const testHarness = createTestHarness ( rendererProps , wrapper , false )
18
18
19
19
return {
20
20
render ( props ?: TProps ) {
21
21
renderProps = props
22
22
act ( ( ) => {
23
23
try {
24
- const serverOutput = ReactDOMServer . renderToString ( testHarness ( props ) )
25
- container . innerHTML = serverOutput
24
+ serverOutput = ReactDOMServer . renderToString ( testHarness ( props ) )
26
25
} catch ( e : unknown ) {
27
26
rendererProps . setError ( e as Error )
28
27
}
29
28
} )
30
29
} ,
31
30
hydrate ( ) {
32
- if ( hydrated ) {
31
+ if ( container ) {
33
32
throw new Error ( 'The component can only be hydrated once' )
34
33
} else {
34
+ container = document . createElement ( 'div' )
35
+ container . innerHTML = serverOutput
35
36
act ( ( ) => {
36
- ReactDOM . hydrate ( testHarness ( renderProps ) , container )
37
+ ReactDOM . hydrate ( testHarness ( renderProps ) , container ! )
37
38
} )
38
- hydrated = true
39
39
}
40
40
} ,
41
41
rerender ( props ?: TProps ) {
42
- if ( ! hydrated ) {
42
+ if ( ! container ) {
43
43
throw new Error ( 'You must hydrate the component before you can rerender' )
44
44
}
45
45
act ( ( ) => {
46
- ReactDOM . render ( testHarness ( props ) , container )
46
+ ReactDOM . render ( testHarness ( props ) , container ! )
47
47
} )
48
48
} ,
49
49
unmount ( ) {
50
- if ( hydrated ) {
50
+ if ( container ) {
51
51
act ( ( ) => {
52
- ReactDOM . unmountComponentAtNode ( container )
52
+ ReactDOM . unmountComponentAtNode ( container ! )
53
53
} )
54
54
}
55
55
} ,
0 commit comments