@@ -181,11 +181,12 @@ export function render(
181181 options ?: Omit < RenderOptions , 'queries' > | undefined ,
182182) : RenderResult
183183
184- export interface RenderHookResult < Result , Props > {
184+ export interface RenderHookArgsResult < Result , Args extends any [ ] > {
185185 /**
186- * Triggers a re-render. The props will be passed to your renderHook callback.
186+ * Triggers a re-render. The arguments will be passed to your renderHook
187+ * callback.
187188 */
188- rerender : ( props ?: Props ) => void
189+ rerender : ( ... args : Args ) => void
189190 /**
190191 * This is a stable reference to the latest value returned by your renderHook
191192 * callback
@@ -203,6 +204,11 @@ export interface RenderHookResult<Result, Props> {
203204 unmount : ( ) => void
204205}
205206
207+ export type RenderHookResult < Result , Props > = RenderHookArgsResult <
208+ Result ,
209+ [ Props ?]
210+ >
211+
206212/** @deprecated */
207213export type BaseRenderHookOptions <
208214 Props ,
@@ -256,6 +262,19 @@ export interface RenderHookOptions<
256262 initialProps ?: Props | undefined
257263}
258264
265+ export interface RenderHookArgsOptions <
266+ Args extends any [ ] ,
267+ Q extends Queries = typeof queries ,
268+ Container extends RendererableContainer | HydrateableContainer = HTMLElement ,
269+ BaseElement extends RendererableContainer | HydrateableContainer = Container ,
270+ > extends RenderOptions < Q , Container , BaseElement > {
271+ /**
272+ * The argument passed to the renderHook callback. Can be useful if you plan
273+ * to use the rerender utility to change the values passed to your hook.
274+ */
275+ initialArgs : Args
276+ }
277+
259278/**
260279 * Allows you to render a hook within a test React component without having to
261280 * create that component yourself.
@@ -271,6 +290,21 @@ export function renderHook<
271290 options ?: RenderHookOptions < Props , Q , Container , BaseElement > | undefined ,
272291) : RenderHookResult < Result , Props >
273292
293+ /**
294+ * Allows you to render a hook within a test React component without having to
295+ * create that component yourself.
296+ */
297+ export function renderHook <
298+ Result ,
299+ Args extends any [ ] ,
300+ Q extends Queries = typeof queries ,
301+ Container extends RendererableContainer | HydrateableContainer = HTMLElement ,
302+ BaseElement extends RendererableContainer | HydrateableContainer = Container ,
303+ > (
304+ render : ( ...initialArgs : Args ) => Result ,
305+ options : RenderHookArgsOptions < Args , Q , Container , BaseElement > | undefined ,
306+ ) : RenderHookArgsResult < Result , Args >
307+
274308/**
275309 * Unmounts React trees that were mounted with render.
276310 */
0 commit comments