私は、空のドロップボックス(フラットリストアイテムをドロップすると、ドラッグ可能なフラットリストに変換する必要があります)と、空白にドラッグアンドドロップする必要がある場所からのドラッグ可能なフラットリストがある、React-Nativeアプリケーションの要件を作成するのに苦労しています。ドロップボックスとその逆。
両方のフラットリストのアイテムには、クリックすると右側のメニューが表示され、アイテムを他のフラットリストに移動するオプションが表示されます。
それが非常に一般的なシナリオであることは知っていますが、React-Nativeを初めて使用するため、自分でライブラリを入手したり、自分で作成したりするのに苦労しています。
ReduxとTypeScriptでReact-Nativeを使用しています
Flatlist( https://github.com/computerjazz/react-native-draggable-flatlist )にreact-native-draggable-flatlistを使用しています。他にもっと良いオプションがあるかどうかお知らせください
react-native-reanimated
の宣言型APIを使用したよりパフォーマンスの高い方法
<FlatList data={new Array(10).fill(0)}
renderItem={({item, index}) => <GestureItem key={index} item={item} />}
/>
const GestureItem = ({item})=> {
const safex = new A.Value(0)
const safeY = new A.Value(0)
const draX = new Value(0)
const dragY = new Value(0)
const panState = new Value(State.UNDETERMINED)
const onGestureEvent = A.event([
{
nativeEvent: {
translationX: dragX,
translationY: dragY,
state: panState,
},
},
]);
const transX = cond(
eq(panState, State.ACTIVE),
dragX,
set(safeX, add(safeX, dragX))
);
const transY = cond(
eq(panState, State.ACTIVE),
dragY,
set(safeY, add(safeY, dragY))
);
return (
<PanGestureHandler
onGestureEvent={onGestureEvent}
onHandlerStateChange={onGestureEvent}>
<A.View style={{width: 100, height : 100, transform :[{translateX: transX}, {translateY: transY}]}} >
</A.View>
</PanGestureHandler>
)
}
リスト項目とそのインデックスを交換するには、Code
コンポーネントを使用します