(
fn: (...args: Args) => Return
)
| 12 | * @see https://github.com/facebook/react/issues/14099#issuecomment-440013892 |
| 13 | */ |
| 14 | export const useEvent = <Args extends unknown[], Return>( |
| 15 | fn: (...args: Args) => Return |
| 16 | ): ((...args: Args) => Return) => { |
| 17 | const ref = React.useRef<(...args: Args) => Return>(() => { |
| 18 | throw new Error('Cannot call an event handler while rendering.'); |
| 19 | }); |
| 20 | |
| 21 | useLayoutEffect(() => { |
| 22 | ref.current = fn; |
| 23 | }); |
| 24 | |
| 25 | return useCallback((...args: Args) => ref.current(...args), []); |
| 26 | }; |
no outgoing calls