我有一个
<Swipeable/>
组件,里面有一个 <Pressable/>
组件。我遇到的问题是,在滑动期间,可按压组件的 onPress 将触发。
我检查了 Swipeables 属性,看看是否有一些东西可以用来检查其当前是否正在滑动,然后只需更新状态以禁用可按下。
但是,onSwipeableWillOpen 或 renderRightActions 等属性均无法在滑动开始时提供即时反馈。
我也遇到了同样的问题(在 iOS 上)。我搜索了所有内容,但找不到合适的解决方案。但是,以下修复对我有用:
我收到了一组消息,每当我在 messagesgae 上滑动时,我都会将其添加到 ID 数组中(也用于某些样式)。重要提示:如果
pressOut
上的 ID 在数组中,则不要触发该函数。
messages.map((message) => {
const swiped = swipedMessages.includes(message.id);
return (
<Swipeable
key={message.id}
onSwipeableOpenStartDrag={() => setSwipedMessages( swipedMessages.concat([message.id]) )}
onSwipeableClose={() => setSwipedMessages( swipedMessages.filter( (m) => m !== message.id ) )}
>
<Pressable
onPressOut={() => {
console.log(swiped);
if(!swiped) {
router.push(...);
}
}}
>
...
</Pressable>
</Swipeable>
);
})
如果您还没有找到更好的解决方案,希望它能有所帮助。 (如果是,请告诉我):)