@quidone/react-native-wheel-picker
Version:
Picker is a UI component for selecting an item from a list of options.
44 lines (43 loc) • 1.31 kB
text/typescript
import {useEffect} from 'react';
import {useInit, useStableCallback} from '@rozhkov/react-useful-hooks';
import {
type BaseControlConfig,
type Control,
type ControlEvents,
createControl,
} from './create-control';
export const usePickerControl = <
Config extends BaseControlConfig = BaseControlConfig,
>() => {
return useInit(() => createControl<Config>());
};
export const useOnPickerValueChangedEffect = <ControlT extends Control>(
control: ControlT,
effect: ControlEvents<ControlT>['onValueChanged'],
) => {
const effectStable = useStableCallback(effect);
useEffect(() => {
const unsubscribe = control._on(
'onValueChanged',
effectStable as ControlEvents['onValueChanged'],
);
return () => {
unsubscribe();
};
}, [control]); // eslint-disable-line react-hooks/exhaustive-deps
};
export const useOnPickerValueChangingEffect = <ControlT extends Control>(
control: ControlT,
effect: ControlEvents<ControlT>['onValueChanging'],
) => {
const effectStable = useStableCallback(effect);
useEffect(() => {
const unsubscribe = control._on(
'onValueChanging',
effectStable as ControlEvents['onValueChanged'],
);
return () => {
unsubscribe();
};
}, [control]); // eslint-disable-line react-hooks/exhaustive-deps
};