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 [height, setHeight] = useState(profile.height || ''); const [weight, setWeight] = useState(profile.weight || ''); const [shoeSize, setShoeSize] = useState(profile.shoeSize || ''); 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 handleInputHeight = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; if (Number.isNaN(Number(value))) { return; } setHeight(string2Number(value)); }, []); const handleInputWeight = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; if (Number.isNaN(Number(value))) { return; } setWeight(string2Number(value)); }, []); const handleInputShoeSize = useCallback((e: BaseEventOrig) => { const value = e.detail.value || ''; if (Number.isNaN(Number(value))) { return; } setShoeSize(string2Number(value)); }, []); const handleGenderChange = useCallback((value: GenderType) => { log('handleGenderChange', value); setGender(value); }, []); useImperativeHandle( ref, () => ({ getData: () => ({ name, gender, age, height, weight, shoeSize }), }), [name, gender, age, height, weight, shoeSize] ); return (
); } export default forwardRef(ProfileBasicFragment);