diff --git a/.all-contributorsrc b/.all-contributorsrc
index 821ffece..42bb9709 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -519,6 +519,16 @@
"contributions": [
"maintenance"
]
+ },
+ {
+ "login": "xobotyi",
+ "name": "Anton Zinovyev",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6178739?v=4",
+ "profile": "https://github.com/xobotyi",
+ "contributions": [
+ "bug",
+ "code"
+ ]
}
],
"skipCi": true,
diff --git a/README.md b/README.md
index 411ca55a..a976ce7b 100644
--- a/README.md
+++ b/README.md
@@ -239,6 +239,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 Aleksandar Grbic ๐ |
 Jonathan Holmes ๐ป |
 Michaรซl De Boey ๐ง |
+  Anton Zinovyev ๐ ๐ป |
diff --git a/src/server/pure.ts b/src/server/pure.ts
index 1bacd008..b37b6df5 100644
--- a/src/server/pure.ts
+++ b/src/server/pure.ts
@@ -2,7 +2,7 @@ import ReactDOMServer from 'react-dom/server'
import ReactDOM from 'react-dom'
import { act } from 'react-dom/test-utils'
-import { RendererProps, RendererOptions } from '../types/react'
+import { RendererOptions, RendererProps } from '../types/react'
import { createRenderHook } from '../core'
import { createTestHarness } from '../helpers/createTestHarness'
@@ -12,8 +12,8 @@ function createServerRenderer(
{ wrapper }: RendererOptions
) {
let renderProps: TProps | undefined
- let hydrated = false
- const container = document.createElement('div')
+ let container: HTMLDivElement | undefined
+ let serverOutput: string = ''
const testHarness = createTestHarness(rendererProps, wrapper, false)
return {
@@ -21,35 +21,35 @@ function createServerRenderer(
renderProps = props
act(() => {
try {
- const serverOutput = ReactDOMServer.renderToString(testHarness(props))
- container.innerHTML = serverOutput
+ serverOutput = ReactDOMServer.renderToString(testHarness(props))
} catch (e: unknown) {
rendererProps.setError(e as Error)
}
})
},
hydrate() {
- if (hydrated) {
+ if (container) {
throw new Error('The component can only be hydrated once')
} else {
+ container = document.createElement('div')
+ container.innerHTML = serverOutput
act(() => {
- ReactDOM.hydrate(testHarness(renderProps), container)
+ ReactDOM.hydrate(testHarness(renderProps), container!)
})
- hydrated = true
}
},
rerender(props?: TProps) {
- if (!hydrated) {
+ if (!container) {
throw new Error('You must hydrate the component before you can rerender')
}
act(() => {
- ReactDOM.render(testHarness(props), container)
+ ReactDOM.render(testHarness(props), container!)
})
},
unmount() {
- if (hydrated) {
+ if (container) {
act(() => {
- ReactDOM.unmountComponentAtNode(container)
+ ReactDOM.unmountComponentAtNode(container!)
})
}
},