tdesign-react
Version:
TDesign Component for React
55 lines (51 loc) • 2.27 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _slicedToArray } from '../../_chunks/dep-48805ab8.js';
import { useState, useMemo, useRef, useEffect } from 'react';
import { get, isUndefined } from 'lodash-es';
import { HOOK_MARK } from './useForm.js';
import noop from '../../_util/noop.js';
import '../../_chunks/dep-026a4c6b.js';
import '../../_chunks/dep-87d110df.js';
import '../../_chunks/dep-46885238.js';
import '../../_chunks/dep-cb0a3966.js';
import '../../_chunks/dep-eca3a3de.js';
import '../../_chunks/dep-b908e1fe.js';
function useWatch(name, form) {
var _useState = useState(),
_useState2 = _slicedToArray(_useState, 2),
value = _useState2[0],
setValue = _useState2[1];
var valueStr = useMemo(function () {
return JSON.stringify(value);
}, [value]);
var valueStrRef = useRef(valueStr);
var isValidForm = form && form._init;
useEffect(function () {
var _form$getInternalHook3, _form$getFieldsValue2;
if (!isValidForm) return;
var _form$getInternalHook = (_form$getInternalHook3 = form.getInternalHooks) === null || _form$getInternalHook3 === void 0 ? void 0 : _form$getInternalHook3.call(form, HOOK_MARK),
_form$getInternalHook2 = _form$getInternalHook.registerWatch,
registerWatch = _form$getInternalHook2 === void 0 ? noop : _form$getInternalHook2;
var cancelRegister = registerWatch(function () {
var _form$getFieldsValue;
var allFieldsValue2 = (_form$getFieldsValue = form.getFieldsValue) === null || _form$getFieldsValue === void 0 ? void 0 : _form$getFieldsValue.call(form, true);
var newValue = get(allFieldsValue2, name);
var nextValueStr = JSON.stringify(newValue);
if (valueStrRef.current !== nextValueStr) {
valueStrRef.current = nextValueStr;
setValue(nextValueStr);
}
});
var allFieldsValue = (_form$getFieldsValue2 = form.getFieldsValue) === null || _form$getFieldsValue2 === void 0 ? void 0 : _form$getFieldsValue2.call(form, true);
var initialValue = get(allFieldsValue, name);
setValue(JSON.stringify(initialValue));
return cancelRegister;
}, []);
return isUndefined(value) ? value : JSON.parse(value);
}
export { useWatch as default };
//# sourceMappingURL=useWatch.js.map