Skip to content

Instantly share code, notes, and snippets.

@createdbymahmood
Last active December 4, 2020 12:09
Show Gist options
  • Save createdbymahmood/30f4456d9314c4cfbe8ec0ac03898b20 to your computer and use it in GitHub Desktop.
Save createdbymahmood/30f4456d9314c4cfbe8ec0ac03898b20 to your computer and use it in GitHub Desktop.
Sample for useImperativeHandle
const Register: FC = props => {
const formRef = useRef<ImperativeHandleProps>(null!);
return (
<Fragment>
<Form ref={formRef} />
<button onClick={() => formRef.current.onSomePropFired()}>
sbt form
</button>
</Fragment>
);
};
type ImperativeHandleProps = HTMLFormElement & {
onSomePropFired: () => void;
};
const Form = React.forwardRef<
ImperativeHandleProps,
HTMLProps<HTMLFormElement>
>((props, ref) => {
const formRef = useRef<ImperativeHandleProps>(null!)
const imperativeHandle = () => {
return {
onSomePropFired() {
console.log("onSomePropFired called");
formRef.current.focus()
},
} as ImperativeHandleProps;
};
useImperativeHandle(ref, () => imperativeHandle());
return <form ref={formRef} {...props}></form>;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment