Files
wlan-cloud-ucentralgw-ui/src/hooks/useFormRef.ts
Charles 21452d091f [WIFI-11542] AP Scripts
Signed-off-by: Charles <charles.bourque96@gmail.com>
2022-12-01 16:12:30 +00:00

31 lines
832 B
TypeScript

import { Ref, useCallback, useMemo, useState } from 'react';
import { FormikProps } from 'formik';
import { FormType } from '../models/Form';
export const useFormRef = () => {
const [form, setForm] = useState<FormType>({
submitForm: () => {},
isSubmitting: false,
isValid: true,
dirty: false,
});
const formRef = useCallback(
(node: FormikProps<Record<string, unknown>> | undefined) => {
if (
node &&
(form.submitForm !== node.submitForm ||
form.isSubmitting !== node.isSubmitting ||
form.isValid !== node.isValid ||
form.dirty !== node.dirty)
) {
setForm(node);
}
},
[form],
) as Ref<FormikProps<Record<string, unknown>>> | undefined;
const toReturn = useMemo(() => ({ form, formRef }), [form]);
return toReturn;
};