如何一次播放数组中的一首歌曲反应js

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)

Ori*_*ori 5

不要一次映射所有歌曲,按索引 ( 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)