仿网易云项目笔记

简介: 仿网易云项目笔记

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



目录
相关文章
|
机器学习/深度学习 并行计算 图形学
CPU、GPU、TPU、NPU等到底是什么?
CPU、GPU、TPU、NPU等到底是什么?
2687 3
FL Studio目前最新版本V21中文版下载安装包
FL Studio 21是一款功能强大的音乐编曲制作软件。尽管你可能没有接触过音乐制作,也能通过fl Studio 21,撰写,整理,录制,编辑,混合,掌握和制作出专业的品质音乐。FL Studio对电脑及相应配置要求不高,可以在不同设备中灵活应用。
10221 0
|
存储 JavaScript 安全
阿里 OSS图片上传 —— 原生JS中使用
这是最近开发遇到的一个坑,&quot;可爱&quot;的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档. 然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.
1418 0
阿里 OSS图片上传 —— 原生JS中使用
|
8月前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
SQL 安全 搜索推荐
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
靶机实战-vuluhub系列-vulnhub_DOUBLETROUBLE_1
|
设计模式
SpringMVC常见组件之DataBinder数据绑定器分析
SpringMVC常见组件之DataBinder数据绑定器分析
580 0
|
10月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
547 8
|
存储 运维 监控
构建高效运维体系:从监控到自动化的全方位实践
在当今信息技术飞速发展的时代,运维作为保障信息系统稳定运行的关键环节,其重要性不言而喻。本文将围绕如何构建一个高效的运维体系进行深入探讨,内容涵盖从监控、日志分析到自动化运维工具的选择与应用,以及在实际工作中的经验和案例分享。通过本文的介绍,读者将能够了解到如何在复杂多变的技术环境中,确保系统的高可用性、高性能和安全性,为业务连续性提供坚实保障。
|
关系型数据库 Java 数据库
实时计算 Flink版操作报错合集之flinksql采PG数据库时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
前端开发 JavaScript 安全
前端技术栈都有那些,需要学会啥才可以上手写项目?
【7月更文挑战第9天】 前端技术栈包括HTML/CSS/JS基础,熟悉Vue.js/React/Angular等框架,掌握Git、Webpack等工具,理解HTTP协议及安全概念。使用Node.js和编辑器提升效率,从基础到框架层层深入,实践项目以巩固知识,持续学习应对技术更新。
506 0