@@ -181,11 +181,12 @@ export function render(
181
181
options ?: Omit < RenderOptions , 'queries' > | undefined ,
182
182
) : RenderResult
183
183
184
- export interface RenderHookResult < Result , Props > {
184
+ export interface RenderHookArgsResult < Result , Args extends any [ ] > {
185
185
/**
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.
187
188
*/
188
- rerender : ( props ?: Props ) => void
189
+ rerender : ( ... args : Args ) => void
189
190
/**
190
191
* This is a stable reference to the latest value returned by your renderHook
191
192
* callback
@@ -203,6 +204,11 @@ export interface RenderHookResult<Result, Props> {
203
204
unmount : ( ) => void
204
205
}
205
206
207
+ export type RenderHookResult < Result , Props > = RenderHookArgsResult <
208
+ Result ,
209
+ [ Props ?]
210
+ >
211
+
206
212
/** @deprecated */
207
213
export type BaseRenderHookOptions <
208
214
Props ,
@@ -256,6 +262,19 @@ export interface RenderHookOptions<
256
262
initialProps ?: Props | undefined
257
263
}
258
264
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
+
259
278
/**
260
279
* Allows you to render a hook within a test React component without having to
261
280
* create that component yourself.
@@ -271,6 +290,21 @@ export function renderHook<
271
290
options ?: RenderHookOptions < Props , Q , Container , BaseElement > | undefined ,
272
291
) : RenderHookResult < Result , Props >
273
292
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
+
274
308
/**
275
309
* Unmounts React trees that were mounted with render.
276
310
*/
0 commit comments