使用HTML5在React中构建简单的音频播放器时遇到麻烦

文森特

我最近开始学习React,并且正在尝试构建一个简单的音频播放器。我目前正在使用此示例作为参考,但它内置在一个文件中

https://github.com/CezarLuiz0/react-cl-audio-player

我尝试制作的代码是以“反应”方式完成的,其中UI具有可重用的组件,但是我很难将我的代码分成有意义且有效的组件。例如,如果我尝试将某些渲染代码从父组件(AudioPlayer)移到(PlayButton),则子组件突然无法访问在父组件安装时创建的音频方法。

这是我的代码库。

https://github.com/vincentchin/reactmusicplayer

现在可以使用,但我想改进它。如果有人可以指出这方面的巨大缺陷,那也是很棒的,因为我确信我已经打破了一些规则或标准来编写React代码。

维拉卡

您可以从子组件访问父组件的方法,方法是将方法作为道具传递,然后在子组件内部调用它。

例如(在子组件的render方法中):

<button onClick={this.props.methodFromTheParent}>Click me</button>

您还可以将参数传递给以下方法:

<button onClick={this.props.methodFromTheParent.bind(null, 'Hello')}>Click me</button>

将值绑定到属于父组件的方法时null切记传递而不是this作为第一个参数。

我也浏览了您的仓库。您可以通过将不同的元素放入自己的组件中来清理AudioPlayer组件。

render方法可能看起来像这样:

render() {
    return (
      <div>
          <PlayButton onClick={this.togglePlay} playing={this.state.playing} />
          {!this.state.hidePlayer ?
          (<Player
             playerState={this.state}
             togglePlay={this.togglePlay}
             setProgress={this.setProgress}
             ...
          />) : null}
      </div>
    );
  }

然后在新创建的Player组件中:

render() {
  var pState = this.props.playerState; // Just to make this more readable
  return (
    <div className="player">
      <PlayButton onClick={this.props.togglePlay} playing={pState.playing} />
      <Timeline
        currentTimeDisplay={pState.currentTimeDisplay}
        setProgress={this.props.setProgress}
        progress={pState.progress}
        ...
      />
      <VolumeContainer
        onMouseLeave={this.props.noShow}
        setVolume={this.setVolume}
        toggleMute={this.toggleMute}
        ...
      />
    </div>
  );
}

您可以根据需要将布局分为多个嵌套组件,这很有意义。

请记住,实际上onClick还要在子组件(<button onClick={this.props.onClick}>Play</button>)中添加该属性

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Web音频API构建HTML5音频播放器

来自分类Dev

WebAudioAPI:在Firefox中将JS音频对象附加到<audio> html5播放器的麻烦

来自分类Dev

在HTML5视频API播放器中使用HTML5音频API功能

来自分类Dev

如何使html5音频播放器响应?

来自分类Dev

样式化HTML5音频播放器

来自分类Dev

如何禁用音频播放器HTML5中的特定控件

来自分类Dev

如何在html5音频和视频播放器中回显php数组?

来自分类Dev

HTML5和JavaScript中每个音频播放器的音量滑块

来自分类Dev

HTML5音频播放器无法在Safari或IE上与jQuery一起使用

来自分类Dev

HTML5音频播放器无法在Safari或IE上与jQuery一起使用

来自分类Dev

通过$ http服务使用AngularJs的HTML5音频播放器

来自分类Dev

下一个音轨播放时如何停止此特定的音频播放器(HTML5 + JavaScript)

来自分类Dev

移动浏览器上的“自动播放” HTML5音频播放器

来自分类Dev

制作HTML链接以播放音频(没有HTML5播放器)

来自分类Dev

制作HTML链接以播放音频(没有HTML5播放器)

来自分类Dev

切换SHOUTcast音频流HTML5音频播放器和JQuery

来自分类Dev

切换SHOUTcast音频流HTML5音频播放器和JQuery

来自分类Dev

可以将 HTML5 音频播放器配置为在页面加载时保持不变吗?

来自分类Dev

音频播放器html5播放按钮无法正常工作...?

来自分类Dev

在iOS中安装PWA时,我的HTML5视频播放器无法正常工作

来自分类Dev

如何自定义html5音频播放器

来自分类Dev

具有多个文件的HTML5音频播放器(随机)

来自分类Dev

html5音频播放器通过innerhtml问题刷新,带有preventdefault

来自分类Dev

JW Player-加载播放器时出错:Heroku上的Rails 3.2应用中找不到HTML5播放器

来自分类Dev

在播放器不可见的情况下自动播放带有HTML5 embed标签的音频

来自分类Dev

如何设计HTML 5音频播放器

来自分类Dev

使用 Ionic-v3 加载位于设备内部的视频时,HTML5 视频播放器会出错

来自分类Dev

在Android HTML5播放器中开始播放所需的用户手势

来自分类Dev

如何防止HTML5视频播放器播放图标在iPhone Safari中消失

Related 相关文章

  1. 1

    使用Web音频API构建HTML5音频播放器

  2. 2

    WebAudioAPI:在Firefox中将JS音频对象附加到<audio> html5播放器的麻烦

  3. 3

    在HTML5视频API播放器中使用HTML5音频API功能

  4. 4

    如何使html5音频播放器响应?

  5. 5

    样式化HTML5音频播放器

  6. 6

    如何禁用音频播放器HTML5中的特定控件

  7. 7

    如何在html5音频和视频播放器中回显php数组?

  8. 8

    HTML5和JavaScript中每个音频播放器的音量滑块

  9. 9

    HTML5音频播放器无法在Safari或IE上与jQuery一起使用

  10. 10

    HTML5音频播放器无法在Safari或IE上与jQuery一起使用

  11. 11

    通过$ http服务使用AngularJs的HTML5音频播放器

  12. 12

    下一个音轨播放时如何停止此特定的音频播放器(HTML5 + JavaScript)

  13. 13

    移动浏览器上的“自动播放” HTML5音频播放器

  14. 14

    制作HTML链接以播放音频(没有HTML5播放器)

  15. 15

    制作HTML链接以播放音频(没有HTML5播放器)

  16. 16

    切换SHOUTcast音频流HTML5音频播放器和JQuery

  17. 17

    切换SHOUTcast音频流HTML5音频播放器和JQuery

  18. 18

    可以将 HTML5 音频播放器配置为在页面加载时保持不变吗?

  19. 19

    音频播放器html5播放按钮无法正常工作...?

  20. 20

    在iOS中安装PWA时,我的HTML5视频播放器无法正常工作

  21. 21

    如何自定义html5音频播放器

  22. 22

    具有多个文件的HTML5音频播放器(随机)

  23. 23

    html5音频播放器通过innerhtml问题刷新,带有preventdefault

  24. 24

    JW Player-加载播放器时出错:Heroku上的Rails 3.2应用中找不到HTML5播放器

  25. 25

    在播放器不可见的情况下自动播放带有HTML5 embed标签的音频

  26. 26

    如何设计HTML 5音频播放器

  27. 27

    使用 Ionic-v3 加载位于设备内部的视频时,HTML5 视频播放器会出错

  28. 28

    在Android HTML5播放器中开始播放所需的用户手势

  29. 29

    如何防止HTML5视频播放器播放图标在iPhone Safari中消失

热门标签

归档