UNPKG

@td-design/react-native

Version:

react-native UI组件库

53 lines (52 loc) 1.51 kB
import { useEffect } from 'react'; import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks'; export default function useRadio(_ref) { let { value, options, disabledValue, defaultValue, onChange } = _ref; const [transformedOptions, setTransformedOptions] = useSafeState([]); useEffect(() => { const checkedValue = value ?? defaultValue; const newOptions = options.map(option => { const checked = checkedValue === option.value; return { ...option, disabled: !!(disabledValue !== null && disabledValue !== void 0 && disabledValue.includes(option.value)), status: checked ? 'checked' : 'unchecked' }; }); setTransformedOptions(newOptions); }, [options, value, defaultValue, disabledValue]); /** * 1. 选中状态下,设置为未选中 * 2. 未选中状态下,设置为选中 */ const handleChange = (value, status) => { if (status === 'unchecked') { if (onChange) { onChange(value); } else { const newOptions = transformedOptions.map(option => { if (option.disabled || option.value !== value) return { ...option, status: 'unchecked' }; return { ...option, status: 'checked' }; }); setTransformedOptions(newOptions); } } }; return { transformedOptions, handleChange: useMemoizedFn(handleChange) }; } //# sourceMappingURL=useRadio.js.map