diff --git a/packages/vant/src/swipe/Swipe.tsx b/packages/vant/src/swipe/Swipe.tsx index ca17bf83b..3fd156f9d 100644 --- a/packages/vant/src/swipe/Swipe.tsx +++ b/packages/vant/src/swipe/Swipe.tsx @@ -290,8 +290,16 @@ export default defineComponent({ if (props.touchable && state.swiping) { touch.move(event); - if (isCorrectDirection.value) { + // if user starting to touchmove, prevent the event bubbling to + // avoid affecting the parent components + const shouldPrevent = + isCorrectDirection.value || + touch.offsetY.value > touch.offsetX.value === props.vertical; + if (shouldPrevent) { preventDefault(event, props.stopPropagation); + } + + if (isCorrectDirection.value) { move({ offset: delta.value }); } }