开发者问题收集

使用nextjs时音频未定义

2021-05-19
6179

使用此代码一直给我错误 ReferenceError: Audio is not defined 。我得到这个错误是因为 nextjs 是 ssr,但无论如何都应该有办法让它工作

  const musicPlayers = useRef<HTMLAudioElement>(
    new Audio("")
  );

我在网上发现我可以使用此东西

  const musicPlayers = useRef<false |HTMLAudioElement>(
    typeof Audio !== "undefined" && new Audio("")
  );

但是我需要使用 false 作为可能的选项,这会给我播放暂停代码的错误

Property 'paused' does not exist on type 'false | HTMLAudioElement'
Property 'play' does not exist on type 'false | HTMLAudioElement'.
     if (musicPlayers.current?.paused) {
          musicPlayers.current.play();
        } else {
          musicPlayers.current?.pause();
        }
1个回答

替换:

const musicPlayers = useRef<HTMLAudioElement | undefined>(
  typeof Audio !== "undefined" ? new Audio("") : undefined
);

然后您可以调用:

musicPlayers.current?.play();
musicPlayers.current?.pause();
Johann-Michael Thiebaut
2021-05-19