import { BaseEventOrig, InputProps } from '@tarojs/components'; import { forwardRef, useCallback, useImperativeHandle, useState } from 'react'; import BlFormInput from '@/components/bl-form-input'; import BlFormItem from '@/components/bl-form-item'; import { BlFormRadio, BlFormRadioGroup } from '@/components/bl-form-radio'; import { GenderType } from '@/constants/material'; import { MaterialProfile } from '@/types/material'; import { logWithPrefix, string2Number } from '@/utils/common'; import './index.less'; interface IProps { profile: Partial; } const PREFIX = 'fragment-profile-basic'; const log = logWithPrefix(PREFIX); function ProfileBasicFragment(props: IProps, ref) { const { profile } = props; const [name, setName] = useState(profile.name || ''); const [gender, setGender] = useState(profile.gender || GenderType.WOMEN); const [age, setAge] = useState(profile.age || ''); const [workedSecCategoryStr, setWorkedSecCategoryStr] = useState(profile.workedSecCategoryStr || ''); const handleInputName = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; setName(value); }, []); const handleInputAge = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; if (Number.isNaN(Number(value))) { return; } setAge(string2Number(value)); }, []); const handleGenderChange = useCallback((value: GenderType) => { log('handleGenderChange', value); setGender(value); }, []); const handleInputWorkedSecCategoryStr = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; setWorkedSecCategoryStr(value); }, []); useImperativeHandle( ref, () => ({ getData: () => ({ name, gender, age, workedSecCategoryStr }), }), [name, gender, age, workedSecCategoryStr] ); return (
); } export default forwardRef(ProfileBasicFragment);