@@ -11,7 +11,13 @@ const mountedContainers = new Set()
1111
1212function render (
1313 ui ,
14- { container, baseElement = container , queries, hydrate = false } = { } ,
14+ {
15+ container,
16+ baseElement = container ,
17+ queries,
18+ hydrate = false ,
19+ wrapper : WrapperComponent ,
20+ } = { } ,
1521) {
1622 if ( ! container ) {
1723 // default to document.body instead of documentElement to avoid output of potentially-large
@@ -25,21 +31,28 @@ function render(
2531 // they're passing us a custom container or not.
2632 mountedContainers . add ( container )
2733
34+
35+ const wrapUiIfNeeded = innerElement =>
36+ WrapperComponent
37+ ? React . createElement ( WrapperComponent , null , innerElement )
38+ : innerElement
39+
2840 act ( ( ) => {
2941 if ( hydrate ) {
30- ReactDOM . hydrate ( ui , container )
42+ ReactDOM . hydrate ( wrapUiIfNeeded ( ui ) , container )
3143 } else {
32- ReactDOM . render ( ui , container )
44+ ReactDOM . render ( wrapUiIfNeeded ( ui ) , container )
3345 }
3446 } )
47+
3548 return {
3649 container,
3750 baseElement,
3851 // eslint-disable-next-line no-console
3952 debug : ( el = baseElement ) => console . log ( prettyDOM ( el ) ) ,
4053 unmount : ( ) => ReactDOM . unmountComponentAtNode ( container ) ,
4154 rerender : rerenderUi => {
42- render ( rerenderUi , { container, baseElement} )
55+ render ( wrapUiIfNeeded ( rerenderUi ) , { container, baseElement} )
4356 // Intentionally do not return anything to avoid unnecessarily complicating the API.
4457 // folks can use all the same utilities we return in the first place that are bound to the container
4558 } ,
@@ -68,25 +81,20 @@ function testHook(callback, options = {}) {
6881 const result = {
6982 current : null ,
7083 }
71- const toRender = ( ) => {
72- const hookRender = (
73- < TestHook callback = { callback } >
74- { res => {
75- result . current = res
76- } }
77- </ TestHook >
78- )
79- if ( options . wrapper ) {
80- return React . createElement ( options . wrapper , null , hookRender )
81- }
82- return hookRender
83- }
84- const { unmount, rerender : rerenderComponent } = render ( toRender ( ) )
84+ const toRender = ( ) => (
85+ < TestHook callback = { callback } >
86+ { res => {
87+ result . current = res
88+ } }
89+ </ TestHook >
90+ )
91+
92+ const { unmount, rerender : rerenderComponent } = render ( toRender ( ) , options )
8593 return {
8694 result,
8795 unmount,
8896 rerender : ( ) => {
89- rerenderComponent ( toRender ( ) )
97+ rerenderComponent ( toRender ( ) , options )
9098 } ,
9199 }
92100}
0 commit comments