React开发实践(8)实战部分 首页 开发(1)

简介: React开发实践(8)实战部分 首页 开发(1)

1、react 路由

1、安装 yarn add react-router-dom
    2、BrowserRouter  Route
    3、exact 精准匹配 
复制代码
  • 貌似 版本更新 和之前的用法 不太一样

网络异常,图片无法展示
|

  • 现在的 版本 react-router-dom version 6 bit 貌似不需要写 exact 就可精准匹配

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • nice !

2、首页组件 拆分

1、首先 src 下新建 pages 文件夹(包含 home 文件夹 details文件夹) 将首页 主要部分 写出来  width 960px 写一点样式居中
2、然后将 左右部分其他组件写出来 放在 home文件夹下的 components 目录下 
3、
复制代码
  • 结构

网络异常,图片无法展示
|

  • style.js

网络异常,图片无法展示
|

  • Home index.js

网络异常,图片无法展示
|

  • 每个组件内都使用 这样的占位

网络异常,图片无法展示
|

  • 页面效果

网络异常,图片无法展示
|

3、首页 专题区域布局和 reducer 设计

  • 先说布局
1、先写 Topic index.js 基本结构 (左侧小图片 右侧文字)
  2、需要一点样式 style.js 外层容器 TopicWrapper 和 内层 TopicItem
复制代码
  • Topic index.js

网络异常,图片无法展示
|

  • style.js

网络异常,图片无法展示
|

  • 页面效果

网络异常,图片无法展示
|

  • 再说 数据 管理
1、我们需要将数据放在 redux 中管理,当然数据都存在 store 中 
  2、之前有个 headerReducer 我们现在需要一个 homeReducer 
  3、home 文件夹下 新建 store 文件夹 建立 reducer.js
  4、
复制代码
  • reducer.js 基本结构

网络异常,图片无法展示
|

1、先写基本的 defaultState 的内容  就是列表展示需要的部分
    2、在 store 引入这个 reducer 为了 统一 将添加一个 index.js 
    3、在父组件使用 connect 进行连接
    4、将数据传递给 子组件使用 
    5、子组件可以改写成一个 function 组件
    6、查看页面效果
复制代码
  • 更改 defaultState 内容

网络异常,图片无法展示
|

  • 统一 引入的方式

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 检查页面 redux 可以看到 数据 非常 nice !

网络异常,图片无法展示
|

  • 父组件 home 组件 connect 连接

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 子组件使用

网络异常,图片无法展示
|

  • 我们甚至可以打印出来 list 看一下 啥叫 immutable 数据

网络异常,图片无法展示
|

  • 页面效果非常nice

网络异常,图片无法展示
|

4、首页 新闻列表 布局和渲染  

1、先在 List.js 写基本的结构
2、在 上层 style.js 写样式
3、因为这是 循环渲染数据 应该和上面一样 放在 reducer 里面管理 
4、然后 将数据 去取出 在 home 中拿到 
5、然后 在 子组件 渲染出来就行 
6、查看页面效果 
复制代码
  • List.js 基本结构

网络异常,图片无法展示
|

  • style.js 结构

网络异常,图片无法展示
|

  • 先看一下页面效果

网络异常,图片无法展示
|

  • 在 reducer 中定义 数据

网络异常,图片无法展示
|

  • home index.js 使用

网络异常,图片无法展示
|

  • List.js

网络异常,图片无法展示
|

  • 页面效果 (暂时不纠结 css hahah)

网络异常,图片无法展示
|

  • 非常nice !

5、首页 推荐部分 布局

1、先在 Recommend.js 基本结构 
2、写它的 style.js
3、然后依旧通过 home.js 传递过来数据 循环展示出
4、页面效果
复制代码
  • Recommend.js

网络异常,图片无法展示
|

  • style.js
  • 注意此处 styled 语法 如何将 组件内的内容传递给 style.js 使用
  • 忽略 此处 图片 有点恶心 其实你可以随意找图片

网络异常,图片无法展示
|

  • Reducer.js 新建数据  其实工作中常规会将初始数据写在 index initialState 中

网络异常,图片无法展示
|

  • home index.js 中使用数据  传递给  Recommend.js

网络异常,图片无法展示
|

  • Recommend.js使用 数据

网络异常,图片无法展示
|

  • 页面效果
  • 虽然图片有点恶心 但没有关系哈哈哈

网络异常,图片无法展示
|

  • Writer 部分 给个边框 先不写

网络异常,图片无法展示
|

5、首页 异步获取数据 怎么做 ?

1、在public 文件夹下api mock 一个 home.json 数据  就是当前写的 reducer.js的数据
2、然后 在 home index.js componentDidMount axios 请求数据
3、想更改 store 里的数据 需要走 完整流程
4、更新 reducer 的数据 通过 action
5、页面效果
复制代码
  • home.json

网络异常,图片无法展示
|

  • home index.js 请求 数据

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 注意此处

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • reducer.js

网络异常,图片无法展示
|

  • 页面效果

网络异常,图片无法展示
|

  • 非常nice ~~~

6、异步操作 代码优化拆分  

1、优化第一个地方 home index.js 发请求 不直接写在 didMount 中
2、因为使用了 thunk 所以将 请求放到 action中 
3、写 actionCreators.js 
4、home index.js 使用 
5、再将字符串 写到 常量 constants 中
复制代码
  • home index.js 优化

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • actionCreators.js

网络异常,图片无法展示
|

  • home index.js

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 定义常量 constants.js 并使用

网络异常,图片无法展示
|

  • reducer.js  还有 actionCreator.js 引用

网络异常,图片无法展示
|

网络异常,图片无法展示
|

8、实现 加载更多功能  

  • 点击加载更多
1、在 List.js 添加一个 阅读更多按钮 并绑定事件
  2、需要 一个 action  在 actionCreators.js 中创建
  3、然后 写 异步获取数据(此处 homeList.json 就是将原来的json 文件复制了一份)
  4、然后 reducer.js 写对应的内容
  5、页面效果
复制代码
  • List.js

网络异常,图片无法展示
|

  • actionCreator.js

网络异常,图片无法展示
|

  • homeMore.json

网络异常,图片无法展示
|

  • reducer.js 注意此处 .concat 进行连接

网络异常,图片无法展示
|

  • contants.js 添加的常量

网络异常,图片无法展示
|

  • 查看 页面效果 非常 nice  实现了 点击更多 可以展示更多内容  !
  • 添加页码 我们常常需要将 展示的页码数据传递给后端 拿到之后 可以展示对应页面的部分
1、初始数据需要定义一个 articlePage 
  2、然后再 List.js 可以使用 这个 
  3、传递给 actionCreators
  4、reducer 可以拿到这个 page 更改数据
  5、更新 页面 
复制代码
  • reducer.js 初始化 数据

网络异常,图片无法展示
|

  • List.js 使用数据

网络异常,图片无法展示
|

  • actionCreators.js

网络异常,图片无法展示
|

  • reducer.js

网络异常,图片无法展示
|

  • 此时 完成了 更新 store 的流程  每次点击 加载更多 页面的 page 就会 + 1

网络异常,图片无法展示
|

9、回到 顶部功能实现  

1、首先是在 home index.js 写这个按钮 
2、需要一个 变量控制显示 / 隐藏
3、在 reducer 初始值 定义
4、然后 根据 window.addEventListener监听滚动
5、创建 actionCreator  
6、添加 reducer.js 更新 值
7、页面效果 
复制代码
  • home index.js

网络异常,图片无法展示
|

  • style.js 添加样式

网络异常,图片无法展示
|

  • 页面 效果

网络异常,图片无法展示
|

  • 实现点击滑动到顶部

网络异常,图片无法展示
|

  • reducer.js 添加一个变量

网络异常,图片无法展示
|

  • home index.js 使用

网络异常,图片无法展示
|

  • 绑定监听事件  注意需要解除绑定

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • actionCreators.js

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • reducer.js

网络异常,图片无法展示
|

  • 页面效果 非常nice 滚动 超过 100 才显示 小于 100 隐藏 !
  • 感觉 在写 actionCreator 时 要特别注意 数据的传递 !

10、首页 性能优化和 路由跳转    

1、因为数据使用的是 immutable.js 所以可以将组件内使用 extends Component 更改为 PureComponent 底层实现了 shoudComponentUpdate 不需要自己写
2、点击 List 内容 怎么去详情页面 不要使用 a 表情 要使用 Link
3、简书 header Logo 也需要更改为 Link 跳转 
复制代码
  • react 之中为啥使用 Link 进行跳转是 因为 保持 network --> doc html 只加载一次 对性能有好处
  • network doc这样看

网络异常,图片无法展示
|

  • ListItem 点击跳转到详情页面

网络异常,图片无法展示
|

  • Logo 更改为 Link 跳转类型

网络异常,图片无法展示
|

网络异常,图片无法展示
|

撒花 🎉🎉🎉

更多项目请访问 github  github.com/huanhunmao

gitee 项目地址 gitee.com/huanhunmao/…



相关文章
|
前端开发 API 数据库
React Server Components 实战:解锁高效渲染新姿势
React Server Components 实战:解锁高效渲染新姿势
559 81
|
缓存 前端开发 安全
解锁下一代 React:Server Components 实战指南
解锁下一代 React:Server Components 实战指南
428 84
|
前端开发 JavaScript 流计算
React 18 流式渲染:解锁极致性能优化实践
React 18 流式渲染:解锁极致性能优化实践
788 80
|
前端开发
React Hooks数据获取:避免内存泄漏的实战指南
React Hooks数据获取:避免内存泄漏的实战指南
|
人工智能 自然语言处理 前端开发
让AI学会"边做边想":ReAct的实战指南
还在为AI的「知其然不知其所以然」而烦恼?ReAct技术让AI不仅会思考,更会行动!通过模拟人类的思考-行动-观察循环,让AI从书呆子变身为真正的问题解决专家。几行代码就能构建智能Agent,告别AI幻觉,拥抱可追溯的推理过程!
1308 7
|
前端开发 JavaScript 编译器
React编程新手入门实践教程
本书深入解析React核心思想与设计哲学,涵盖组件化思维、虚拟DOM原理及JSX本质,探讨函数组件与类组件特性,详解状态管理、生命周期控制及事件处理机制,帮助开发者掌握高效构建用户界面的技巧。
406 1
|
运维 前端开发 数据可视化
【CodeBuddy】挑战一句话开发一个完整项目之:React表单验证系统
本文分享了一个基于React 19构建的用户注册表单系统,采用模块化CSS和状态驱动视图更新,实现实时校验、错误提示与提交反馈等功能。核心亮点包括验证规则引擎(如密码复杂度校验)、交互反馈体系(输入框警示、按钮禁用)及加载动画优化。通过函数式更新确保状态同步,正则表达式实现多条件验证,CSS伪元素打造流畅体验。代码结构清晰,可扩展性强,适合作为React表单开发模板。文末附CodeBuddy免费下载链接,助力高效开发!
375 1
【CodeBuddy】挑战一句话开发一个完整项目之:React表单验证系统
|
JSON 前端开发 算法
掌握Multi-Agent实践(三):ReAct Agent集成Bing和Google搜索功能,采用推理与执行交替策略,增强处理复杂任务能力
掌握Multi-Agent实践(三):ReAct Agent集成Bing和Google搜索功能,采用推理与执行交替策略,增强处理复杂任务能力
1307 23
|
前端开发 数据可视化 测试技术
React音频播放列表组件开发实战:常见问题与避坑指南
本文介绍了构建React音频播放列表组件的核心架构与常见问题解决方案。通过管理播放状态、列表索引和音频进度,结合异步控制、状态清理、节流优化等技术,确保流畅的用户体验。针对移动端兼容性、内存泄漏、列表渲染性能等问题提供了具体修复方案,并分享了自定义Hook封装、可视化音频波形等进阶实践。最后,总结了性能优化法则和测试关键点,帮助开发者打造生产级可靠的音频播放组件。
476 18
|
Web App开发 移动开发 前端开发
React 视频播放器样式自定义实战指南
本文详细介绍了如何在React项目中实现视频播放器的样式自定义,涵盖HTML5 `<video>`标签的基础知识、CSS样式定制技巧及常见问题解决方案。针对全屏模式样式失效、移动端触摸事件冲突和进度条样式定制等问题提供了具体代码示例。同时,探讨了视频预加载策略和内存优化方法,并推荐了几款调试工具,帮助开发者提升用户体验和应用性能。
584 6