@vnmfify/core
Version:
```shell npm i @vnmfify/core -S ```
51 lines (48 loc) • 1.65 kB
JavaScript
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