Как отобразить продолжительность в моем аудиоплейлисте

Это код, который получает продолжительность каждого аудио.

 useEffect(() => {
        const currentData = data?.map(data => {
            const audio = document.createElement('audio')
            audio.src = data.assets[0].audio
       audio.addEventListener('loadedmetadata', function () {
                const duration = audio.duration
                setFeaturesDuration([duration])   
                console.info(duration)
                // durationArray.push(duration)
             
            })
    })
    }, [])


Это то, что я получил, когда продолжительность console.info


PlayList.js:59 56.816333
PlayList.js:59 42.658
PlayList.js:59 50.651333
PlayList.js:59 55.928167
PlayList.js:59 57.391
PlayList.js:59 37.955833
PlayList.js:59 64.052167
PlayList.js:59 47.986833
PlayList.js:59 59.4285
PlayList.js:59 46.706833
PlayList.js:59 56.581167

Но что я хочу сделать, так это то, что я хочу отобразить его в своем списке воспроизведения, вот код, который отображает мой список воспроизведения, ближе к концу кода содержится диапазон, который имеет значение продолжительности.

     {data?.map((data, index) => {
                 
                // const songDuration =  getDuration(data.assets[0].audio)
                // console.info(songDuration)
                 return(
                  <li 
                  onClick = {(e) => {
                    e.preventDefault()
                    setActive(true)
                      store.addSong(data.assets[0].audio)
                      store.addImage(data.photo)
                      store.addName(data.name)
                      store.addSongIndex(index)
                  }}
                  key = {data?.id}>
                  <div className = "plItem">
                     <span className = "trackNumber">{index + 1}</span> 
                     <span className = "trackTitle">
                        <WordLimit limit = {15}>
                         {data ? data.name : "word"}
                         </WordLimit> 
                      </span> 
                      <span>{Duration}</span>
                   </div>
                   </li>
                 )
             } 
              )}

Вы не можете дать напрямую, API должен возвращать значение продолжительности. Клиентская сторона — неподходящее место для определения продолжительности.

Rahul Sharma 23.12.2020 11:10

О, так я никак не могу получить его от клиента??

Ogundipe Pelumi 23.12.2020 11:15

Я так не думаю, Север должен быть подходящим местом для этого. Когда они сохраняют URL-адреса видео, они также должны хранить продолжительность. Предположим, у вас есть 100 URL-адресов в списке для каждого рендера, который вам нужно рассчитать и показать. Это снизит производительность.

Rahul Sharma 23.12.2020 11:23

О, хорошо, спасибо большое за ответ..

Ogundipe Pelumi 23.12.2020 11:31

Хорошо, большое спасибо за ваш ответ, это много значит..

Ogundipe Pelumi 23.12.2020 11:32

Я также добавил ответ, чтобы другие могли обратиться позже.

Rahul Sharma 23.12.2020 11:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
6
132
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я так не думаю. Это возможно, даже если это возможно.

Я бы предположил, что сервер должен быть подходящим местом для этого. Когда они сохраняют URL-адреса видео, они также должны хранить продолжительность. Чтобы они могли отправлять всю связанную (мета) информацию (название, продолжительность, URL-адрес и т. д.) в API. На сервере расчет будет однократный.

Предположим, у вас есть 100 или более URL-адресов видео в списке для каждого рендеринга компонента, вам нужно рассчитать продолжительность и показать. Это неправильный способ сделать это. Это окажет огромное влияние на производительность.

Другие вопросы по теме