aro*_*207 2 javascript arrays mapping reactjs react-hooks
我正在构建一个简单的音乐播放器,但失败的是尝试一次执行数组中的一项。我正在使用 React H5 音频播放器包来播放音乐。我目前正在映射所有歌曲,但我不知道如何一次正确地播放一首。我很感激任何帮助。我已经被这个问题困扰了好几天了。
import { SongContext } from '../../SongContext';
import AudioPlayer from 'react-h5-audio-player';
import 'react-h5-audio-player/lib/styles.css';
import './Player.css';
const Player = () => {
const { songs } = useContext(SongContext);
return (
<>
{songs.length > 0 &&
songs.map((song) => (
<div className="player" key={song.id}>
<AudioPlayer
// autoPlay
// src={song.preview}
showJumpControls={false}
customVolumeControls={[]}
customAdditionalControls={[]}
onPlay={() => console.log('playing')}
/>
</div>
))}
</>
);
};
export default Player;
Run Code Online (Sandbox Code Playgroud)
不要一次映射所有歌曲,按索引 ( currentSong
) 获取一首歌曲,完成后,使用该onEnded
事件增加索引,以便播放下一首。
示例(代码笔):
const Player = () => {
const { songs } = useContext(SongContext);
const [currentSong, setCurrentSong] = useState(0);
const song = songs[currentSong];
if(!song) return null; // don't render the player when no song is available
return (
<div className="player">
<AudioPlayer
autoPlay
src={song.preview}
showJumpControls={false}
customVolumeControls={[]}
customAdditionalControls={[]}
onPlay={() => console.log('playing')}
onEnded={() => setCurrentSong(i => i + 1)}
/>
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1460 次 |
最近记录: |