继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

React框架搭建简易音乐播放器

慕的地10843
关注TA
已关注
手记 1081
粉丝 201
获赞 962

https://github.com/Zmaxt/react-music
              花了两周的时间,跟着视频学习,撸了个音乐播放器。技术栈:react,事件订阅,Jplayer,webpack自动化打包工具。
页面样式如下:

webp

player.png


webp

list.png


实现的功能有:
音乐播放,(播放模式:随机,单曲循环,顺序播放)
                       (播放设置:快进,后退,音量调节,暂停,启动)
列表查看,(删除,切换播放歌曲)
数据来源:
mock music list
开发步骤:
一.搭建开发环境:

webp

webpack.png


  1. npm init 创建package.json

  2. npm install 安装依赖npm 会去找package.json下的dependencies安装

  3. 创建webpack配置文件 webpack.config.js  (entry:index.js,output:path,filename)

  4. 创建入口文件:index.js

  5. Linux 命令:webpack 完成打包

  6. 创建index.html页面运行
    webpack常用loader
    babel-loader
    css-loader
    less-loader
    webpack dev server
    搭建本地服务器,自动刷新

    webp

    image.png


    二.组件开发
    createClass 创建组件
    render 函数将返回的html结构挂载到DOM节点上
    <appcontainer></appcontainer>组件表明哪些组件需要更换
    componentDidMount 只会在装载完成之后调用一次,在 render 之后调用,从这里开始可以通过 ReactDOM.findDOMNode(this) 获取到组件的 DOM 节点。
    componentWillUnmount 解绑事件
    组件间通信:
    父子组件之间传递参数; props

    webp

    父-子.png


    webp

    子-父.png


    webp

    子组件接收.png


    webp

    调用父方法.png

非父子组件 pub/sub 事件订阅,不过复杂项目便难以维护,复杂大型项目使用flux。
三.路由
Router组件本身只是一个容器,真正的路由要通过Route组件定义。

webp

Route.png


上面的是嵌套路由,先加载App组件,然后再加载Player组件
App组件要这样写:

webp

App.png


App组件的this.props.children属性就是子组件。
flux的一种实现方法redux

webp

单向数据流.png


webp

redux流程.png


webp

react.png


webp

action.png


webp

reducer.png

总结与思考:
1.Function bind(this,arg1,arg2,arg3)  绑定事件
2.

webp

巧妙处理数组内循环index+1.png


3.state
组件免不了要与用户互动,React 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI 。
getInitialState(){
定义初始状态
}
通过this.state.[attr] 读取状态,this.setState({修改状态})



作者:穆熙沐
链接:https://www.jianshu.com/p/8ba97b4b7932


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP