Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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_Audio_State - Fatal编程技术网

Javascript 将音频显示状态设置为当前音频的唯一状态

Javascript 将音频显示状态设置为当前音频的唯一状态,javascript,reactjs,audio,state,Javascript,Reactjs,Audio,State,我正在获取一组曲目,每首曲目都有自己的按钮播放每首曲目。我可以单击播放,然后再次单击暂停音频,但如果我尝试播放新音频而不暂停当前播放的音频,则除非双击,否则不会播放,因为isPlaying状态将设置为false(这是我切换播放/暂停的方式)。 我希望能够在isplay为true时单击新音频,而不将该状态更改为false(但如果我两次单击同一按钮,仍然能够暂停当前音频)。谢谢 const-App=()=>{ const[tracks,setTracks]=React.useState(null);

我正在获取一组曲目,每首曲目都有自己的按钮播放每首曲目。我可以单击播放,然后再次单击暂停音频,但如果我尝试播放新音频而不暂停当前播放的音频,则除非双击,否则不会播放,因为isPlaying状态将设置为false(这是我切换播放/暂停的方式)。 我希望能够在isplay为true时单击新音频,而不将该状态更改为false(但如果我两次单击同一按钮,仍然能够暂停当前音频)。谢谢

const-App=()=>{
const[tracks,setTracks]=React.useState(null);
const[currentSong,setCurrentSong]=useState(null);
const[currentId,setCurrentId]=useState(null);
const[isplay,setisplay]=useState(false);
const audio=useRef();
//切换功能,用于切换音频是播放还是暂停
常量切换播放=()=>{
设置显示(!显示);
};
//用于处理当前歌曲和显示状态的onClick函数
常量handleClickPlay=(曲目)=>{
设置当前歌曲(曲目);
setCurrentId(track.id);
设置显示(真);
如果(显示){
切换播放();
}
};
React.useffect(()=>{
如果(当前歌曲){
如果(显示){
audio.current.play();
}否则{
audio.current.pause();
}
}
},[currentSong,iPlay]);
React.useffect(()=>{
如果(显示){
如果(设置当前歌曲){
设置显示(真);
}
}
}, []);
React.useffect(()=>{
获取(“/album.json”)
.then((response)=>response.json())
。然后((数据)=>{
const tracks=Object.values(data.entities.tracks);
设置轨道(轨道);
});
}, []);
如果(!轨道){
返回装载。。。;
}
console.log(currentSong);
console.log(currentId);
控制台日志(显示);
返回(
{currentSong&&(
)}
{tracks.map((track)=>(
currentSong===currentId}
/>
))}
);
};
导出默认应用程序;
常量跟踪行=({
轨道,
手球,
当前歌曲,
网络播放,
身份证件
trackMatchId,
}) => {
常量handleClick=()=>handleClick播放(曲目);
返回(
{播放?“暂停”:“播放”}
{track.title}
);
};
导出默认轨迹行;
您可以尝试以下方法:

const handleClickPlay = (track) => {
  setCurrentSong(track);
  setCurrentId(track.id);
  if (track.id === currentId) togglePlay();
  else setIsPlaying(true);
};

首先,你在玩游戏,到处玩ELSMY坏,我是在中间的名字从播放到播放,编辑现在的帖子!谢谢,这正是我想要的!!如果你不介意的话,你能给我指一个正确的方向,告诉我如何在“播放”和“暂停”之间切换按钮内的文本吗?因为现在,当我单击某个按钮上的播放时,所有按钮都变为“暂停”,我只想更改我单击的按钮。请尝试此
isplay={isplay&&track.id==currentId}
const handleClickPlay = (track) => {
  setCurrentSong(track);
  setCurrentId(track.id);
  if (track.id === currentId) togglePlay();
  else setIsPlaying(true);
};