1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { __assign } from "tslib";
- import { useState, useEvent, useRef, useEffect, } from 'functional-mini/component';
- import { triggerRefEvent } from '../_util/hooks/useReportRef';
- export var useFormItem = function (props) {
- var _a = useState({
- value: undefined,
- status: 'default',
- required: false,
- errors: [],
- }), formData = _a[0], setFormDate = _a[1];
- var formRef = useRef(formData);
- var emitRef = useRef(null);
- useEvent('setFormData', function (values) {
- setFormDate(function (old) {
- var newValue = __assign(__assign({}, old), values);
- formRef.current = newValue;
- return newValue;
- });
- });
- useEvent('getFormData', function () {
- return formRef.current;
- });
- useEvent('on', function (callback) {
- emitRef.current = callback;
- });
- var originalProps = useRef();
- useEvent('getProps', function () {
- return props;
- });
- useEffect(function () {
- return function () {
- emit('didUnmount');
- };
- }, []);
- function emit(event, value, extraInfo) {
- if (emitRef.current) {
- emitRef.current(event, value, extraInfo);
- }
- }
- // 这个必须要放在后面。
- triggerRefEvent();
- useEffect(function () {
- emit('deriveDataFromProps', props, originalProps.current);
- originalProps.current = props;
- }, [props]);
- return {
- formData: formData,
- emit: emit,
- };
- };
|