仿网易云项目笔记

简介: 仿网易云项目笔记

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



目录
相关文章
|
存储 JavaScript 安全
阿里 OSS图片上传 —— 原生JS中使用
这是最近开发遇到的一个坑,&quot;可爱&quot;的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档. 然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.
1567 0
阿里 OSS图片上传 —— 原生JS中使用
|
存储 JavaScript 前端开发
oss使用SDK上传文件
oss使用SDK上传文件
3432 2
|
jenkins 持续交付 开发工具
jenkins分布式集群部署(十六)
jenkins分布式部署 1.jenkins分布式概念 jenkins分布式就是有多个slave节点,当需要构建的项目非常多时,slave会承担master的工作量,在slave在上创建项目。 slave的环境要和master一致,master上安装了什么软件在slave上要准备相同的,并且路径最好保持一致,与master的区别在于不用安装jenkins
811 0
jenkins分布式集群部署(十六)
|
XML Java 关系型数据库
Spring Boot 异常处理回滚事务详解(自动回滚、手动回滚、部分回滚)
Spring Boot 异常处理回滚事务详解(自动回滚、手动回滚、部分回滚)
4083 0
|
分布式计算 大数据 数据处理
浅谈几个经典大数据处理框架
【6月更文挑战第15天】本文介绍企业如何在数据洪流中保持竞争力需借助可扩展平台和数据策略。数据管道整合多元数据源,便于分析和流转。Kappa架构专注于实时处理(如通过Kafka、Spark Streaming),适合实时响应场景;Lambda架构结合批处理与实时处理(如Spark、Hadoop与Flink),平衡实时性和批处理,易于开发和维护。Apache Beam提供统一模型,适用于流处理和批处理,提升代码复用和效率。这两种架构满足现代应用对数据一致、性能和灵活性的需求。
1362 3
浅谈几个经典大数据处理框架
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
1255 8
|
弹性计算 数据中心
阿里云香港服务器多少钱?阿里云香港服务器介绍及价格配置介绍
阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云百科来详细介绍阿里云香港云服务器:
1538 1
|
缓存 负载均衡 安全
CDN是什么产品,CDN防护效果怎么样,如何选择CDN
CDN是什么产品,CDN防护效果怎么样,如何选择CDN

热门文章

最新文章