项目简介
本项目是基于 React 技术栈开发的综合性生活服务与商品展示系统。包含首页、搜索、个人等多个功能模块,具备城市管理、推荐列表瀑布流布局、搜索列表及商品详情展示、登录状态管理等功能,借助 React 相关技术和第三方库,为用户带来良好交互体验。
项目的主要特性和功能
- 首页功能- 城市管理:支持用户选择不同城市,获取对应城市的服务和商品信息。
- 推荐列表:采用瀑布流布局展示推荐内容,提升浏览体验。
 
- 搜索功能- 搜索列表:用户可输入关键词搜索,展示相关结果。
- 商品详情:点击搜索结果商品,查看详细信息。
 
- 个人功能- 登录状态管理:有效管理用户登录状态,保障信息安全。
 
- 公共组件- 顶部搜索:提供便捷搜索入口。
- 底部导航:方便在不同页面间切换。
- 上拉加载:实现内容分页加载,提升页面性能。
- 回到顶部:用户可快速回到页面顶部。
 
安装使用步骤
项目环境搭建
使用 React 脚手架创建项目:
sh
npx create-react-app my-app
cd my-app
配置 Less 支持
- 拉取配置文件
在项目根目录执行:
sh npm run eject若修改文件后再执行eject命令报错,可采用以下解决方案: 方案 1:访问项目根目录,显示隐藏文件,删除.git文件夹,再次执行eject。 方案 2:先进行git commit操作:sh git add . git commit -m “init” npm run eject
- 安装依赖
可使用淘宝镜像加速安装,先全局安装 cnpm:sh npm install -g cnpm --registry=https://registry.npm.taobao.org再使用cnpm安装less和less-loader:sh cnpm install less less-loader --save-dev
- 修改配置文件
仿照根目录下 config -> webpack.config.js文件中 Sass 的配置方式,修改样式文件正则表达式和相关配置。
- 测试配置
删除 src目录下其他脚手架生成的js、css文件,只保留index.js,增加一个style.less文件观察效果。
- 配置公共变量
安装依赖:
sh cnpm install style-resources-loader --save修改config -> webpack.config.js文件中less-loader配置的use属性,加入style-resources-loader。
配置 Axios 网络请求
- 安装依赖
sh cnpm install --save axios
- 修改配置文件
见 utils -> request.js。
实现首页展示
- 配置路由 v5->v6- 安装依赖
sh npm install --save react-router-dom
- 设置路由
根据 react-router-dom版本变化,按照新规范修改路由配置。
- 路由嵌套
根据 react-router-dom v6的要求,修改路由嵌套写法。
- 页面跳转
在 v6中使用useNavigate替代withRouter实现页面跳转。
 
- 安装依赖
- 配置样式- iconfont
下载 icon 代码后解压,将相关文件加入项目目录,在项目 index.js中引用css文件,挑选相应图标并获取类名应用于页面。
- less
在每个组件的文件夹中创建 index.jsx和style.less,public -> common.less中是共享的 css 属性。
 
- iconfont
下载 icon 代码后解压,将相关文件加入项目目录,在项目 
- 底部导航
使用 react-router-dom中的NavLink进行页面跳转,注意exact="true"。
- 顶部导航
rem 自适应方法见 public->index.html。
- 首页轮播
安装依赖:
js npm install --save react-swipeable-views npm install --save react-swipeable-views-utils
- 服务器提供数据
安装依赖:
js npm install --save experss npm install --save cors
Redux 配置
- 添加依赖
sh npm install --save redux npm install --save react-redux npm install --save-dev redux-devtools-extension同时安装 chrome 插件:Redux DevTools。
- 核心概念及配置- reducer:创建 reducer函数,传入state和action,使用combineReducers组合多个reducer。
- store:创建 store,使用Provider传递store。
- action:创建 action creator函数,在组件中使用useDispatch派发action。
 
- reducer:创建 
内存泄漏处理
- state:在每次 setState操作前判断组件是否已卸载。
- 清除事件绑定:在 useEffect的返回函数中移除事件监听。
- 清除定时器:在 useEffect的返回函数中清除定时器。
- 取消请求:使用 AbortController钩子取消请求。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】