仿网易云项目笔记

简介: 仿网易云项目笔记

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组件



目录
相关文章
|
27天前
|
前端开发 小程序 PHP
多端圈子系统源码安装教程指南
圈子论坛系统源码具有多端覆盖、源码交付、易于扩展、社交功能丰富、数据安全与隐私保护以及用户行为分析与精准运营等多重优势。通过详细的安装教程和三端交付的方式,用户可以轻松地搭建和部署多端圈子系统源码,实现高效的社区论坛管理和运营。
45 0
|
6月前
|
开发工具 开发者
如何用 CocosCreator 对接抖音小游戏的侧边栏复访
最近小游戏的软著下来了,用 CocosCreator 做的游戏也完成了 1.0 版本。而当我打包成抖音小游戏进行提交时,还没到初审就给拒了,因为还有一个机审,机器检测到代码中没有接入 “侧边栏复访功能”。这个我还真不知道,那只能去官方看文档了,位置是小游戏开发文档 -> 指南 -> 开放能力 -> 侧边栏能力。
68 2
|
8月前
|
存储 移动开发 应用服务中间件
H5漂流瓶交友源码|社交漂流瓶H5源码 附安装教程
H5漂流瓶交友源码|社交漂流瓶H5源码 附安装教程
78 2
|
9月前
|
JavaScript
网易云音乐项目
网易云音乐项目
146 0
|
9月前
|
前端开发 JavaScript Java
6 个火爆 GitHub 的后台管理模板,快来收藏!
6 个火爆 GitHub 的后台管理模板,快来收藏!
153 0
|
小程序 前端开发 JavaScript
微信小程序 谈谈在大学初次写项目的体验
微信小程序 谈谈在大学初次写项目的体验
141 0
|
小程序
仿知乎论坛社区社交微信小程序
仿知乎论坛社区社交微信小程序
185 1
仿知乎论坛社区社交微信小程序
|
搜索推荐 小程序 数据挖掘
仿今日头条实时新闻微信小程序项目源码
仿今日头条实时新闻微信小程序项目源码
425 0
仿今日头条实时新闻微信小程序项目源码
|
安全 JavaScript
微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)
页面设置一个隐藏的图片,宽高都是300像素,微信就会抓取这张图片做为分享图片
15567 0
|
缓存 JavaScript 安全
这个高颜值的开源第三方网易云音乐播放器你值得拥有
有没有一个既简洁纯粹,颜值又高的网易云音乐播放器呢,答案是有的,它就是:YesPlayMusic,一个开源的第三方实现。
1164 0
这个高颜值的开源第三方网易云音乐播放器你值得拥有