You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TouchableOpacity的onPress与onPressIn间添加延迟?

实现TouchableOpacity onPress与onPressIn的延迟执行

先把动画逻辑和 onPressIn 要执行的逻辑拆成独立函数,再通过 setTimeout 给 onPressIn 的执行加上延迟,就能实现先触发 onPress、延迟后执行 onPressIn 逻辑的效果:

// 抽离原onPress的动画逻辑
const handlePress = () => {
  Animated.timing(fadeAnim, {
    toValue: 0,
    duration: 300,
    useNativeDriver: false
  }).start();
};

// 抽离原onPressIn要执行的逻辑
const handlePressIn = () => {
  // 这里填写你原本要在onPressIn里执行的代码
};

// 组合延迟触发逻辑
const handlePressWithDelay = () => {
  // 先执行onPress的动画
  handlePress();
  // 延迟指定时间后执行onPressIn逻辑(示例延迟500ms,可自行调整)
  setTimeout(() => {
    handlePressIn();
  }, 500);
};

// 组件调用
<TouchableOpacity
  onPress={handlePressWithDelay}
  // 注意:此处不再绑定原onPressIn属性,避免重复触发
>
  {/* 你的子组件内容 */}
</TouchableOpacity>

额外注意

  • 可根据需求修改 setTimeout 的延迟毫秒数
  • 若组件存在卸载场景,要在卸载时清理定时器防止内存泄漏:
    useEffect(() => {
      let timerId;
      const delayedPress = () => {
        handlePress();
        timerId = setTimeout(() => handlePressIn(), 500);
      };
      // 组件卸载时清除定时器
      return () => clearTimeout(timerId);
    }, [fadeAnim]);
    

内容的提问来源于stack exchange,提问作者Assat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:55:18