前言
React是Facebook开源的一个用来快速动态构建用户界面的js库,React通过操作虚拟DOM(不总是直接操作DOM)来减少更新的次数,React的高效使其非常受欢迎,大厂都在用,赶紧学起来!希望对跟我一样初学react的同学有所帮助。
页面展示
- 猫眼电影小程序原页面

- 实现后效果?优化后!(添加搜索列表功能,优化城市选择)在线访问地址在文章末尾

设计师直呼:我让你模仿没让你超越啊
分析
react中一切皆组件,开发一个功能(页面),相当于开发一个组件。把这一个大的组件划分成一个个组件,然后逐步搭建起来。从这个页面可以看出
- 头部 电竞赛事
- 热门赛事 中 导航切换
- 城市选择
- 赛事列表
- 无赛事时显示的nothing
- 底部导航
主要功能:
- loading状态
- 标签栏切换赛事
- 搜索框根据列表信息搜索赛事
- 城市选择,可筛选城市赛事
- 路由切换页面
- …
划分的一个个组件及父子组件,在下图的文件目录架构中清晰可见。

简单说明一下
- src:源码文件,开发目录
- assets:是专门用于保存各种外部文件的,比如音频、图片、字体等
- api:存放接口文件
- components:组件文件夹
- pages:页面级别组件
- unit: 存放一些js组件,封装的一些js方法
- routes: 路由配置
准备工作
1.初始化脚手架(vitejs 当前最快的脚手架),npm init @vitejs/app -> 输入项目名 -> 选择react 开发框架 -> 确定用react -> 得到了一个模板项目
2.安装相关依赖和UI组件库,本文所使用的是antd-mobile 的UI组件库
3.创建目录
4.npm run dev 启动
实现
在分析完如何写以及搭建好我们的目录架构之后,开始进入正题。
图3
路由配置
使用了路由懒加载,将路由组件分包,在进入其他目标页面时再加载,可提升首页加载速度。为了方便,我这里设置了主界面是体育/赛事Contest,因为要实现的主要页面是在体育/赛事,其他页面后续完善
import { lazy } from 'react'
import { Routes, Route} from 'react-router-dom'
const Contest = lazy(() => import('../pages/Contest'))
const Home = lazy(() => import('../pages/Home'))
const Movie = lazy(() => import('../pages/Movie'))
const Yanchu = lazy(() => import('../pages/Yanchu'))
const Mine = lazy(() => import('../pages/Mine'))
const RoutesConfig = () => {return (<Routes><Route path="/home" element={<Home />}></Route><Route path="/movie