Причина, по которой кнопка all будет воспроизводить последний звук, потому что вы пытаетесь связать весь звук с одной ссылкой, каждая звуковая ссылка перекрывает друг друга до последнего звука. Есть несколько способов добиться желаемого. Самый простой способ - создать отдельный компонент для обработки кнопки воспроизведения звука. Например:
function AudioPlayer({ src }) {
const audioRef = useRef();
return (
<div>
<audio
controls = "controls"
preload = "auto"
autobuffer = "true"
style = {{display: "none"}}
ref = {audioRef}
>
<source src={src} />
</audio>
<button onClick = {() => audioRef.current.play()}>Play</button>
</div>
);
}
Затем вы можете использовать AudioPlayer в своем audio.map
audios.map(audio => <AudioPlayer src={audio} />);