切换播放/暂停以响应音频

Posted

技术标签:

【中文标题】切换播放/暂停以响应音频【英文标题】:toggle play/pause in react with audio 【发布时间】:2016-09-29 20:35:04 【问题描述】:

我做了一个音频播放器,一键播放和暂停。如果playing 为假,这将执行播放操作,如果playing 为真,则将暂停。

我不确定是不是因为在 React 中思考对我来说仍然不是 100% 自然,但我不知道该怎么做。

谁能指出我正确的方向?

请看下面我的代码。

var Player = React.createClass(

   getInitialState: function()
       return
           songs:[],
           playing: false
       
   ,

   audio: new Audio,

   playSong: function()
       this.setState(playing = true);
       this.audio.src = this.state.songs[this.props.song];
       this.audio.play();
   ,

   pauseSong: function() 
       this.setState(playing = false);
       this.audio.pause();
   ,

  render: function()
      return(
        <p onClick=...>Play/Pause<p/>
      )
  

我想我可以创建另一个函数来切换播放和暂停,如下所示。这是最好的方法吗?

togglePlayPause:function() 
    if(this.state.playing === false) 
        this.playSong();
    else 
        this.pauseSong();
    
,
render: function()
      return(
        <p onClick=this.togglePlayPause>Play/Pause<p/>
      )
  

【问题讨论】:

【参考方案1】:
var Player = React.createClass(

  getInitialState: function() 
    return 
      songs: [],
      playing: false
    
  ,

  audio: new Audio,

  playSong: function() 
    console.log("play")
    this.setState( playing: true );
    this.audio.src = this.state.songs[this.props.song];
    this.audio.play(); 
  ,

  pauseSong: function() 
    console.log("pause");
    this.setState( playing: false );
    this.audio.pause();
  ,

  render: function() 
    return(
      <p onClick=this.state.playing ? this.pauseSong : this.playSong>Play/Pause</p>
    )
  

);

ReactDOM.render(
  <Player/>,
  document.getElementById('container')
);

您可以使用三元 onclick 来执行此操作,您可以决定要调用哪个函数。 可能是错字,但你需要做this.setState(key:value); 而不是this.setState(key = value);

https://jsfiddle.net/69z2wepo/183621/

【讨论】:

jsfiddle 链接指向默认的“Hello World”示例:| 太棒了,谢谢!如果«Play/Pause»按钮会随着点击而改变,这个例子会变得更好。

以上是关于切换播放/暂停以响应音频的主要内容,如果未能解决你的问题,请参考以下文章

切换播放/暂停按钮(多个音频)

如何一键切换音频播放/暂停

在 HTML 音频播放器中切换播放/暂停按钮

jQuery - 切换播放/暂停按钮(多个音频)

Javascript 音频控制自动播放播放暂停

点击时切换音频?