当前位置:首页 > React

react如何播放音乐

2026-03-11 08:14:00React

使用 HTML5 Audio 元素

在 React 中直接使用 HTML5 的 <audio> 元素是最基础的方法。通过 useRef 钩子可以获取 DOM 节点并控制播放。

import React, { useRef } from 'react';

function AudioPlayer() {
  const audioRef = useRef(null);

  const playAudio = () => {
    audioRef.current.play();
  };

  const pauseAudio = () => {
    audioRef.current.pause();
  };

  return (
    <div>
      <audio ref={audioRef} src="your-audio-file.mp3" />
      <button onClick={playAudio}>Play</button>
      <button onClick={pauseAudio}>Pause</button>
    </div>
  );
}

使用第三方库 react-audio-player

react-audio-player 提供了更 React 友好的组件化解决方案,内置播放控制 UI。

import React from 'react';
import ReactAudioPlayer from 'react-audio-player';

function AudioPlayer() {
  return (
    <ReactAudioPlayer
      src="your-audio-file.mp3"
      controls
    />
  );
}

实现自定义播放器

通过 useStateuseEffect 构建自定义播放逻辑,适合需要深度定制的场景。

import React, { useState, useEffect } from 'react';

function CustomAudioPlayer() {
  const [isPlaying, setIsPlaying] = useState(false);
  const [audio] = useState(new Audio('your-audio-file.mp3'));

  useEffect(() => {
    return () => {
      audio.pause(); // 组件卸载时停止播放
    };
  }, [audio]);

  const togglePlay = () => {
    if (isPlaying) {
      audio.pause();
    } else {
      audio.play();
    }
    setIsPlaying(!isPlaying);
  };

  return (
    <div>
      <button onClick={togglePlay}>
        {isPlaying ? 'Pause' : 'Play'}
      </button>
    </div>
  );
}

处理跨浏览器兼容性

不同浏览器对音频格式的支持存在差异,建议提供多种格式的备用源。

<audio controls>
  <source src="audio.mp3" type="audio/mpeg" />
  <source src="audio.ogg" type="audio/ogg" />
  您的浏览器不支持音频元素。
</audio>

添加播放进度控制

通过 timeupdate 事件和 currentTime 属性实现进度条交互。

react如何播放音乐

function ProgressAudioPlayer() {
  const [progress, setProgress] = useState(0);
  const audioRef = useRef(null);

  const handleTimeUpdate = () => {
    const current = audioRef.current.currentTime;
    const duration = audioRef.current.duration || 1;
    setProgress((current / duration) * 100);
  };

  return (
    <div>
      <audio
        ref={audioRef}
        src="audio.mp3"
        onTimeUpdate={handleTimeUpdate}
        controls
      />
      <input
        type="range"
        value={progress}
        onChange={(e) => {
          const seekTime = (e.target.value / 100) * audioRef.current.duration;
          audioRef.current.currentTime = seekTime;
        }}
      />
    </div>
  );
}

标签: 音乐react
分享给朋友:

相关文章

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放器 在 Vue 中实现音乐播放器可以通过结合 HTML5 的 <audio> 元素和 Vue 的响应式特性来完成。以下是一个简单的实现方法: 安装依赖(可选) 如果需…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…

react如何引入echarts

react如何引入echarts

安装 ECharts 依赖 在 React 项目中安装 ECharts 核心库和 React 封装库: npm install echarts echarts-for-react 基础引入方式 创建…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…

react如何修改值

react如何修改值

修改 React 组件的值 在 React 中修改值通常涉及状态管理。根据组件的类型(类组件或函数组件)和状态管理方式(本地状态或全局状态),方法有所不同。 使用 useState(函数组件) 在函…