mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-25 04:46:40 +07:00
#58 using formik at node submit form
This commit is contained in:
parent
4b542e0291
commit
b871cc2042
17 changed files with 230 additions and 423 deletions
39
src/utils/hooks/useNodeFormFormik.ts
Normal file
39
src/utils/hooks/useNodeFormFormik.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import { INode } from '~/redux/types';
|
||||
import { FileUploader } from '~/utils/hooks/fileUploader';
|
||||
import { useCallback, useEffect, useRef } from 'react';
|
||||
import { useFormik, useFormikContext } from 'formik';
|
||||
import { object } from 'yup';
|
||||
|
||||
const validationSchema = object().shape({});
|
||||
|
||||
export const useNodeFormFormik = (
|
||||
values: INode,
|
||||
uploader: FileUploader,
|
||||
stopEditing: () => void
|
||||
) => {
|
||||
const onSubmit = useCallback(console.log, []);
|
||||
const { current: initialValues } = useRef(values);
|
||||
|
||||
const onReset = useCallback(() => {
|
||||
uploader.setFiles([]);
|
||||
|
||||
if (stopEditing) stopEditing();
|
||||
}, [uploader, stopEditing]);
|
||||
|
||||
const formik = useFormik<INode>({
|
||||
initialValues,
|
||||
validationSchema,
|
||||
onSubmit,
|
||||
onReset,
|
||||
initialStatus: '',
|
||||
validateOnChange: true,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
formik.setFieldValue('files', uploader.files);
|
||||
}, [formik.setFieldValue, uploader.files]);
|
||||
|
||||
return formik;
|
||||
};
|
||||
|
||||
export const useNodeFormContext = () => useFormikContext<INode>();
|
Loading…
Add table
Add a link
Reference in a new issue