React版本的在线网易云音乐

React版本的在线网易云音乐

栏目分类: 视频音乐
最后更新: 2025-10-30
下载次数: 0

简介:

React 18.x版本的网易云音乐

项目亮点

1、基于media&flex实现响应式布局,使用hooks封装公共逻辑为通用组件;

2、结合antd实现骨架屏预加载动画效果,避免页面长时间白屏或者闪烁等情况

3、基于zustand库,实现全局的用户信息、播放列表信息及用户个性化配置的状态管理

4、实现用户的账号密码、邮箱及二维码扫描登录的方式

5、实现播放列表的滚动,让当前播放歌曲在列表中央,让用户快速定位

6、实现歌词随歌曲的滚动效果

7、项目UI的构思及设计

React && Vue

react没有多 Tab 页缓存功能实现类似keep-alive

react没有官方的transition动画组件,需要安装第三方插件

相比react的createContext / useContext,vue的provide / inject 更方便,更简洁

react的useImperativeHandle的用法与vue的defineExpose用法大致一样,vue的写法会更方便简洁

Antd && element-plus的特点

antd图片没有懒加载、占位内容

antd的Skeleton骨架屏不能自定义,比较呆板

zustand && pinia的特点

没有pinia的getter的状态计算,不过也还好(主要是想:根据多个state值,来拼凑一个全新的state)

zustand会很方便将state的值存在localStorage,并且会自动获取,不用自己手动存取,转换数据格式

性能优化

useCallback的作用

usecallback不是用来解决组件中有过多内部函数导致的性能问题,而是用来避免子组件不必要的render;

useCallback配合着memo一起使用;

useContext的使用

调用组件上方最近的Provider的值;传递对象和函数时,可以使用 useCallback包装,并将对象创建包装到 useMemo 中

图片: