仿网易云项目笔记

简介: 仿网易云项目笔记

memo的应用 & PureComponent

React.memo 为高阶组件。它与React.PureComponent非常相似。


默认情况下其只会对复杂对象做浅层对比,如果你想要控制对比过程,那么请将自定义的比较函数通过第二个参数传入来实现。这与shouldComponentUpdate 方法的返回值相反。


PureComponent(纯组件) 用于避免不必要的渲染(运行render函数)

优化: 如果一个组件的状态和属性都没有发生变化,那么就没有必要重新渲染

PureComponent是一个组件,如果某个组件继承自它,则该组件的shouldComponentUpdate会进行优化,对属性和状态进行浅比较,如果相等则不会重新渲染


注意

PureComponent是进行浅比较 为了效率应该尽量使用PureComponent 永远不要直接更改之前的状态(不要–this.state.a = 123),而应该去覆盖(this.setState({a: 123})) 函数组件使用React.memo(函数组件)制作纯组件


immutable 方法

1.fromJS

2. toJS

3.get/getIn

4.set

5. merge


组件解构目录

├─api // 网路请求代码、工具类函数和相关配置
├─application // 项目核心功能 
├─assets // 字体配置及全局样式 
├─baseUI // 基础 UI 轮子 
├─components // 可复用的 UI 组件 
├─routes // 路由配置文件 
└─store //redux 相关文件
App.js // 根组件 
index.js // 入口文件 
serviceWorker.js // PWA 离线应用配置 
style.js // 默认样式
复制代码


默认样式及字体图标准备

styled-components(CSS in JS)

style.js是全局样式引入APP.js根组件


路由配置

Home组件renderRoutes (route.routes)


全局样式

global-style.js


Home组件

Tab,TabItem,Top样式


redux 准备

创建store,reducer


项目中注入 store

App组件内部的


轮播

slider组件

<div className="before"></div>来添加背景填充


推荐列表

list组件

getCount 是一个工具类函数

图标和文字提供一个遮罩<div className="decorate"></div>


better-scroll

React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。


axios 请求封装

config.js 文件,里面编写 axios 的配置

request.js 用来封装不同的网络请求


redux 层开发

actionCreators.js// 放不同 action 的地方 constants.js // 常量集合,存放不同 action 的 type 值 index.js // 用来导出 reducer, actionCreators reducer.js // 存放 initialState 和 reducer 函数


组件连接 Redux

需要将 recommend 下的 reducer 注册到全局 store,在 store/reducer.js 中,内容如下


图片懒加载

react-lazyload

loading CSS3 的 animation-delay 特性


歌手页面

horizen-item组件使用better-Scroll组件实现,ref取得原生DOM。

Scroll组件开发歌手list组件。


数据层开发

actionCreators.js //放不同action的地方 constants.js //常量集合,存放不同action的type值 index.js //用来导出reducer,action reducer.js //存放initialState和reducer函数


分类和列表联动

设置更新书写函数触发更新。


上拉 / 下拉加载更多实现

引入2个loading组件上拉下拉。


图片懒加载

react-lazyload


防抖处理

当你频繁地下拉时,事实上事件回调函数也会被频繁触发,导致发送很多无意义的请求。因此这里对 Scroll 基础组件做一下防抖处理。


排行榜模块

使用Scroll,list组件


动画切换

CSSTransition

react-transition-group动画切换


Header组件

返回点击和画下走马灯


顶部和菜单布局

歌单列表布局

TopDesc 和 Menu和SongList


useCallback 优化 function props

将传给子组件的函数用 useCallback 包裹,这也是 useCallback 的常用场景。

使用组件复用,复用Album组件。


Singer组件



目录
相关文章
|
1月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
43 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
9月前
|
存储 JSON 测试技术
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(三)
78 0
|
9月前
|
容器
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(二)
157 0
|
9月前
|
API 开发者
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
237 0
|
10月前
|
JavaScript
网易云音乐项目
网易云音乐项目
159 0
|
小程序
仿知乎论坛社区社交微信小程序
仿知乎论坛社区社交微信小程序
195 1
仿知乎论坛社区社交微信小程序
|
搜索推荐 小程序 数据挖掘
仿今日头条实时新闻微信小程序项目源码
仿今日头条实时新闻微信小程序项目源码
434 0
仿今日头条实时新闻微信小程序项目源码
|
缓存 JavaScript 安全
这个高颜值的开源第三方网易云音乐播放器你值得拥有
有没有一个既简洁纯粹,颜值又高的网易云音乐播放器呢,答案是有的,它就是:YesPlayMusic,一个开源的第三方实现。
1190 0
这个高颜值的开源第三方网易云音乐播放器你值得拥有
|
移动开发 JavaScript 安全
手把手教你实现H5微信分享
使用微信分享,可以获得更好的传播效果。那如何利用微信公众号向好友进行信息分享呢? 这里以分享 微信红包 为例,手把手教大家实现微信授权与分享。
|
前端开发 JavaScript
精讲前端实战项目之移动端网易云首页(附源码)
精讲前端实战项目之移动端网易云首页(附源码)
920 0
精讲前端实战项目之移动端网易云首页(附源码)