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

@u-wave/react-vimeo组件onProgress回调无法触发求助

解决@u-wave/react-vimeo onProgress回调不触发的问题

针对你遇到的视频可正常播放但onProgress回调未触发的情况,可尝试以下几种解决方案:

1. 动态导入组件(适配Next.js SSR/SSG环境)

Next.js默认的服务端渲染可能导致Vimeo Player脚本未正确加载,进而无法绑定回调。通过动态导入并禁用SSR解决:

import dynamic from 'next/dynamic';

// 动态导入Vimeo组件,禁用SSR
const Vimeo = dynamic(() => import('@u-wave/react-vimeo'), {
  ssr: false,
});

const handleVimeoProgress = (data: any) => {
  console.log('Progress:', data.percent);
};

export default function YourComponent() {
  return (
    <Vimeo
      video="你的视频ID"
      width="850"
      height="400"
      onProgress={handleVimeoProgress}
      autoplay
    />
  );
}

2. 手动通过ref绑定Progress事件

如果组件默认的props回调仍不生效,可通过ref获取Player实例,手动监听事件:

import { useRef, useEffect } from 'react';
import Vimeo from '@u-wave/react-vimeo';

const handleVimeoProgress = (data: any) => {
  console.log('Progress:', data.percent);
};

export default function YourComponent() {
  const playerRef = useRef<any>(null);

  useEffect(() => {
    const playerInstance = playerRef.current?.player;
    if (playerInstance) {
      // 绑定progress事件
      playerInstance.on('progress', handleVimeoProgress);
      // 组件卸载时移除监听
      return () => {
        playerInstance.off('progress', handleVimeoProgress);
      };
    }
  }, []);

  return (
    <Vimeo
      ref={playerRef}
      video="你的视频ID"
      width="850"
      height="400"
      autoplay
    />
  );
}

3. 检查视频权限配置

确保你的Vimeo视频满足以下条件:

  • 视频的嵌入权限已开启,允许在你的域名下嵌入
  • 视频未开启严格的DRM或隐私限制(部分受保护视频会限制Player API事件触发)

4. 升级组件版本

当前使用的@u-wave/react-vimeo@0.9.10版本较旧,存在部分与现代React/Next.js版本兼容的问题。尝试升级到最新稳定版:

npm update @u-wave/react-vimeo
# 或
yarn upgrade @u-wave/react-vimeo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:28:13