仿网易云项目笔记

简介: 仿网易云项目笔记

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



目录
相关文章
|
域名解析 小程序 Linux
朋友圈超火的盲盒交友小程序,完整搭建教程及源码分享~(多图)
朋友圈超火的盲盒交友小程序,完整搭建教程及源码分享~(多图)
朋友圈超火的盲盒交友小程序,完整搭建教程及源码分享~(多图)
|
NoSQL Java 关系型数据库
【精选】六款JavaWeb项目源码下载
【精选】六款JavaWeb项目源码下载
【精选】六款JavaWeb项目源码下载
|
1月前
|
JavaScript Java 测试技术
基于微信小程序的国产动漫论坛的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的国产动漫论坛的设计与实现(源码+lw+部署文档+讲解等)
|
1月前
|
JavaScript
网易云音乐项目
网易云音乐项目
54 0
|
10月前
|
搜索推荐
最新体育赛事直播安装源码下载哪里找
体育直播平台作为人们追逐比赛精彩的重要方式之一,无论是在家中还是在工作场所,体育迷们都可以通过体育直播平台亲临现场般的观赛体验。但是,对于想要搭建平台获取最新体育直播源码的人来说,该如何获取源码呢?本文将为您探讨两种选择。
|
小程序
仿知乎论坛社区社交微信小程序
仿知乎论坛社区社交微信小程序
150 1
仿知乎论坛社区社交微信小程序
|
搜索推荐 小程序 数据挖掘
仿今日头条实时新闻微信小程序项目源码
仿今日头条实时新闻微信小程序项目源码
350 0
仿今日头条实时新闻微信小程序项目源码
|
数据可视化 开发工具
新手使用APICloud可视化开发搭建商城主页
APICloud的可视化开发功能,听说只要上手托拉拽就可以完成各种页面的开发,不需要写代码,可以大大减少开发的用时,主要是对新手非常友好的。今天就来体验一下,看看能否用最少的时间完成一个商城主页面的创建呢?
170 0
|
Web App开发 JavaScript 前端开发
😺我开发了一个Chrome插件,可以在掘金官网里撸猫!还可以实时和铲屎官们聊天
掘金又弄这种整活儿的活动了~~我就喜欢整活儿! 话不多说,先看效果~
325 0
😺我开发了一个Chrome插件,可以在掘金官网里撸猫!还可以实时和铲屎官们聊天