react-native-reorderable-list
Version:
Reorderable list for React Native applications, powered by Reanimated
38 lines (28 loc) • 866 B
text/typescript
import {useEffect} from 'react';
import {useContext} from './useContext';
import {ReorderableCellContext, ReorderableListContext} from '../contexts';
export const useReorderableDragEnd = (
onEnd: (from: number, to: number) => void,
) => {
const {dragEndHandlers} = useContext(ReorderableListContext);
const {index} = useContext(ReorderableCellContext);
useEffect(() => {
dragEndHandlers.modify(value => {
'worklet';
if (!Array.isArray(value[index])) {
value[index] = [];
}
value[index].push(onEnd);
return value;
});
return () => {
dragEndHandlers.modify(value => {
'worklet';
if (Array.isArray(value[index])) {
value[index] = value[index].filter(x => x.name !== onEnd.name);
}
return value;
});
};
}, [index, dragEndHandlers, onEnd]);
};