Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用声音模块停止音频?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用声音模块停止音频?

Javascript 如何使用声音模块停止音频?,javascript,reactjs,Javascript,Reactjs,我正在使用React中的use sound(使用声音)模块,并尝试制作播放/暂停按钮。当我单击按钮时,音频会播放,但当我再次单击时,无法停止音频 我在控制台中检查,看到单击按钮可以正确更改isPlaying值,但实际音频不会停止 有人知道如何停止音频吗?万分感谢 这是我的按钮代码,“music”变量是音频文件的路径: import React from "react"; import { FontAwesomeIcon } from "@fortawesome/re

我正在使用React中的use sound(使用声音)模块,并尝试制作播放/暂停按钮。当我单击按钮时,音频会播放,但当我再次单击时,无法停止音频

我在控制台中检查,看到单击按钮可以正确更改isPlaying值,但实际音频不会停止

有人知道如何停止音频吗?万分感谢

这是我的按钮代码,“music”变量是音频文件的路径:

import React from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import useSound from "use-sound";

const PlayBtn = ({ music }) => {
  const sound = music;
  const [play, { stop, isPlaying }] = useSound(sound);
  console.log(isPlaying);

  return (
    <span>
      <FontAwesomeIcon
        icon={["far", "play-circle"]}
        onClick={isPlaying ? stop : play}
      />
    </span>
  );
};

export default PlayBtn;
从“React”导入React;
从“@fortawesome/react fontawesome”导入{FontAwesomeIcon}”;
从“使用声音”导入useSound;
const PlayBtn=({music})=>{
声音=音乐;
const[play,{stop,isplay}]=useSound(声音);
控制台日志(显示);
返回(
);
};
导出默认PlayBtn;

这将帮助您使用挂钩进行音频播放和暂停。只需根据您的代码编辑和编写功能

import React, { useState, useEffect } from "react";
    
    const useAudio = url => {
      const [audio] = useState(new Audio(url));
      const [playing, setPlaying] = useState(false);
    
      const toggle = () => setPlaying(!playing);
    
      useEffect(() => {
          playing ? audio.play() : audio.pause();
        },
        [playing]
      );
    
      useEffect(() => {
        audio.addEventListener('ended', () => setPlaying(false));
        return () => {
          audio.removeEventListener('ended', () => setPlaying(false));
        };
      }, []);
    
      return [playing, toggle];
    };
    
    const Player = ({ url }) => {
      const [playing, toggle] = useAudio(url);
    
      return (
        <div>
          <button onClick={toggle}>{playing ? "Pause" : "Play"}</button>
        </div>
      );
    };
    
    export default Player;
import React,{useState,useffect}来自“React”;
const useAudio=url=>{
const[audio]=useState(新音频(url));
const[playing,setPlaying]=useState(false);
const toggle=()=>setPlaying(!playing);
useffect(()=>{
播放?audio.play():audio.pause();
},
[播放]
);
useffect(()=>{
audio.addEventListener('end',()=>setPlaying(false));
return()=>{
audio.removeEventListener('end',()=>setPlaying(false));
};
}, []);
返回[播放,切换];
};
常量播放器=({url})=>{
常量[播放,切换]=使用音频(url);
返回(
{播放?“暂停”:“播放”}
);
};
导出默认播放器;

谢谢!!!我会试试这个解决方案!