亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 React 循環播放音頻

使用 React 循環播放音頻

斯蒂芬大帝 2022-12-22 11:52:48
我正在使用 React.js 并且我有一個返回音頻的 API:{   audios: [      "https://thisisanaudiolink",      "https://thisisanaudiolink",      "https://thisisanaudiolink"   ]}我不想使用 HTML 的音頻標簽來播放,而是我的自定義按鈕。我怎樣才能做到這一點?到目前為止我已經嘗試過:我試過這個循環,但所有按鈕只播放最后一個音頻:import React, { useState, useRef } from "react";const Flashcards = () => {const [audios, setAudios] = useState([    "https://s3-sa-east-1.amazonaws.com/carneiro/public/card_audios/d7f2a0-5c89ef/4.wav",    "https://s3-sa-east-1.amazonaws.com/carneiro/public/card_audios/d7f2a0-5c89ef/12.wav",    "https://s3-sa-east-1.amazonaws.com/carneiro/public/card_audios/d7f2a0-5c89ef/1.wav"]);const audioRef = useRef();return (    <div>         {             audios.map(audio => (                <div key = {audio}>                    <audio                        controls = "controls"                        preload = "auto"                        autobuffer = "true"                        style = {{display: "none"}}                        ref = {audioRef}                    >                        <source src = {audio} />                    </audio>                    <button onClick = {() => audioRef.current.play()}>Play</button>                </div>                               ))         }    </div>   )}export default Flashcards;   
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

所有按鈕將播放最后一個音頻的原因是因為您嘗試將所有音頻與一個參考綁定,每個音頻參考相互覆蓋直到最后一個音頻。有幾種方法可以實現你想要的。最簡單的方法是創建單獨的組件來處理您的音頻播放按鈕。例如:


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>

  );

}

然后你可以在你的audio.map


audios.map(audio => <AudioPlayer src={audio} />);


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號