首页 > 其他分享 >react.js 实现音乐播放、下一曲、以及删除歌曲(仅播放列表)

react.js 实现音乐播放、下一曲、以及删除歌曲(仅播放列表)

时间:2022-10-04 00:55:05浏览次数:59  
标签:album singer title js react item year 播放列表 id

import React, { Component } from 'react';
export default class Music extends Component {   constructor(props) {     super(props);     this.state = {       songs:[         {"id":"1","title":"Love","singer":"cone翻唱团","album":"Love shot","year":"2016","type":"翻唱"},         {"id":"2","title":"Fever","singer":"rosy","album":"Medley Song","year":"2019","type":"原唱"},         {"id":"3","title":"和你","singer":"李飘飘","album":"和你合集","year":"2020","type":"翻唱"},         {"id":"4","title":"我很快乐","singer":"鹿小桃","album":"我很快乐","year":"2019","type":"翻唱"},         {"id":"5","title":"暖暖","singer":"郑豪豪","album":"暖暖","year":"2018","type":"翻唱"},         {"id":"6","title":"我想念","singer":"颜辞","album":"继一.","year":"2021","type":"翻唱"},         {"id":"7","title":"潮汐","singer":"紫沐","album":"潮汐","year":"2022","type":"翻唱"},         {"id":"8","title":"刻在我心底的名字","singer":"卢广仲","album":"刻在我心底的声音","year":"2016","type":"原唱"},         {"id":"9","title":"如故","singer":"卿月怀","album":"载不动愁","year":"2021","type":"原唱"},         {"id":"10","title":"舒伯特玫瑰","singer":"朱康伟;利阳","album":"舒伯特","year":"2019","type":"原唱"}       ],       mp3file: '',       nowitem:'',       nowtitle:''
    };   }  
    handleClick(item, e) {       let file='http://localhost:8088/myServer/mybase/mp3/'+item.title+'.mp3';       this.setState({mp3file: file});       this.setState({nowitem: item.id});     this.setState({nowitem: item.title});        console.log(this.state.mp3file);   }  
  deleteClick(item, e){   let id=item.id;   id=Number(id);   var mp3=this.state.songs;   mp3.splice(id-1,1);   this.setState({songs: mp3});   console.log(id,this.state.songs);   }
  nextplay = (e) =>{         let id=this.state.nowitem;         id=Number(id);         let item=this.state.songs[id];         let file='http://localhost:8088/myServer/mybase/mp3/'+item.title+'.mp3';           this.setState({mp3file: file});           this.setState({nowitem: id+1});         this.setState({nowitem: item.title});       }  
 
  render(){
    return (       <div>         <table style={{width:'80%'}}>             <thead>             <tr>                 <td>歌曲名字</td>                 <td>歌手</td>                 <td>专辑</td>                 <td>发行年份</td>                 <td>原唱/翻唱</td>             </tr></thead>             <tbody>                   {                     this.state.songs.map((item, index)=>{                       return(                         <tr key={"div2_"+index}  style={{marginLeft:12, marginTop:4}}>                         <td>                          <a href="#" onClick={this.deleteClick.bind(this, item)} style={{marginRight:'10px'}}><img src={require('../../images/deletefile.png')} /></a>                          <a href="#" onClick={this.handleClick.bind(this, item)} style={{textDecoration:'none'}}><img src={require('../../images/play.png')} width="20" height="20" style={{marginRight:'10px'}}/>{item.title}</a>                          </td>                          <td>{item.singer}</td>                          <td>{item.album}</td>                          <td>{item.year}</td>                          <td>{item.title}</td>                         </tr>                                   )                     })                   }</tbody>             </table>                 <div >                   <button onClick={() => {this.nextplay()}} style={{position:'absolute', top:300, left:60, width:50,height:50,borderRadius:'30%',border: '1px solid #d5d5d5',fontSize:'13px'}}>下一曲</button>                 <audio id="myMp3" src={this.state.mp3file} controls="controls" autoPlay="autoplay" preload="auto" style={{position:'absolute', top:300, left:120, width:600}}></audio>                 </div>
              </div>     )                 }             }     mp3歌曲是从后台提取的,以后会做成动态,即数据库提取数据。 还想做一个单曲循环的功能但是还在研究。 本实例还是有bug的,比如说删除了该歌曲,上一曲播放点击下一曲,被删除的仍然可以播放。  

标签:album,singer,title,js,react,item,year,播放列表,id
From: https://www.cnblogs.com/mdddd-yep/p/16751956.html

相关文章

  • python jsonpath 替换json 指定字段
    1. pass 2.  pass......
  • FastJson---高性能JSON开发包
    SVN:​​http://code.alibabatech.com/svn/fastjson/trunk/​​​WIKI:​​http://code.alibabatech.com/wiki/display/FastJSON/Home​​pom.xml文件中加入依赖依赖:<depend......
  • 一些js 插件的作用
    前言:从一些开源网站上下载下来的后台管理系统模板一般会有很多的js,其js的功能是什么呢?这里随手查询了一下,记录下来正文:1.zDialog.js各种弹窗插件详细案例:​​​http:......
  • 【树上背包】洛谷 P4516 [JSOI2018] 潜入行动
    P4516[JSOI2018]潜入行动省选/NOI-、树上背包计数题意略设状态为\(dp[u][j][0/1][0/1]\),u点子树放了j个装置,u点有没有放装置,u点有没有被监听的方案数。对......
  • js进阶手写常见函数
    JavaScript进阶的必要性无论是学习react还是vue,它们都是js的应用框架。剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜无......
  • js函数式编程讲解
    什么是函数式编程是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简......
  • js函数式编程讲解
    什么是函数式编程是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简......
  • js进阶手写常见函数
    JavaScript进阶的必要性无论是学习react还是vue,它们都是js的应用框架。剥去他们的壳子看到的始终是js,所以作为一个前端大厨必须要熟练掌握好js这个大勺,才能烧出一顿好菜......
  • 深入理解Node.js的进程与子进程
    进程:process模块process模块是nodejs提供给开发者用来和当前进程交互的工具,它的提供了很多实用的API。从文档出发,管中窥豹,进一步认识和学习process模块:如何处理命......
  • Node.js实现大文件断点续传
    前言平常业务需求:上传图片、Excel等,毕竟几M的大小可以很快就上传到服务器。针对于上传视频等大文件几百M或者几G的大小,就需要等待比较长的时间。这就产生了对应的解决方......