UNPKG

@vnmfify/core

Version:

```shell npm i @vnmfify/core -S ```

51 lines (48 loc) 1.65 kB
import _get from "lodash/get"; import { useForceUpdate } from "@vnmfify/hooks"; import { useCallback, useContext, useEffect, useMemo } from "react"; import FormContext from "./form.context"; import useForm from "./use-form"; export default function useFormValue(name, options) { var { defaultValue } = options !== null && options !== void 0 ? options : {}; var { name: formName } = useContext(FormContext); var form = useForm(formName); var forceUpdate = useForceUpdate(); var onValueChange = useCallback(() => forceUpdate(), [forceUpdate]); useEffect(() => { form === null || form === void 0 ? void 0 : form.addEventListener("fields.".concat(name, ".value.change"), onValueChange); return () => form === null || form === void 0 ? void 0 : form.removeEventListener("fields.".concat(name, ".value.change"), onValueChange); }, [form, name, onValueChange]); useEffect(() => { if (name) { form === null || form === void 0 ? void 0 : form.setDefaultValues({ [name]: defaultValue }); onValueChange(); } }, []); var getValue = useCallback(() => { if (form) { var _get2; return (_get2 = _get(form.getValues(name), name)) !== null && _get2 !== void 0 ? _get2 : ""; } }, [form, name]); return useMemo(() => ({ get value() { return getValue(); }, setValue: value => { if (name) { form === null || form === void 0 ? void 0 : form.setValues({ [name]: value }); } }, getValue }), [form, getValue, name]); } //# sourceMappingURL=use-form-value.js.map