在 Swipeable 滑动时禁用 Pressable

问题描述 投票:0回答:1

我有一个

<Swipeable/>
组件,里面有一个
<Pressable/>
组件。我遇到的问题是,在滑动期间,可按压组件的 onPress 将触发。

我检查了 Swipeables 属性,看看是否有一些东西可以用来检查其当前是否正在滑动,然后只需更新状态以禁用可按下。

但是,onSwipeableWillOpen 或 renderRightActions 等属性均无法在滑动开始时提供即时反馈。

react-native
1个回答
0
投票

我也遇到了同样的问题(在 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>
  );
})

如果您还没有找到更好的解决方案,希望它能有所帮助。 (如果是,请告诉我):)

© www.soinside.com 2019 - 2024. All rights reserved.