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/…



相关文章
|
4月前
|
前端开发 JavaScript
深入理解并实践React Hooks —— useEffect与useState
深入理解并实践React Hooks —— useEffect与useState
172 1
|
3月前
|
前端开发 JavaScript API
React开发需要了解的10个库
本文首发于微信公众号“前端徐徐”,介绍了React及其常用库。React是由Meta开发的JavaScript库,用于构建动态用户界面,广泛应用于Facebook、Instagram等知名网站。文章详细讲解了Axios、Formik、React Helmet、React-Redux、React Router DOM、Dotenv、ESLint、Storybook、Framer Motion和React Bootstrap等库的使用方法和应用场景,帮助开发者提升开发效率和代码质量。
144 4
React开发需要了解的10个库
|
3月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
253 2
|
2月前
|
移动开发 前端开发 JavaScript
React 表单验证实战
【10月更文挑战第25天】本文介绍了 React 表单验证的常见方法,包括原生 HTML5 验证、自定义验证逻辑和第三方库(如 Formik 和 Yup)的使用。通过具体代码示例,详细讲解了每种方法的实现步骤,并探讨了常见问题和易错点及其解决方法。旨在帮助开发者提高表单验证的有效性和安全性。
86 8
|
2月前
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
2月前
|
前端开发 JavaScript API
React Native实战:构建跨平台移动应用
React Native实战:构建跨平台移动应用
40 0
|
3月前
|
前端开发 JavaScript 开发者
React 组件化开发最佳实践
【10月更文挑战第4天】React 组件化开发最佳实践
73 4
|
3月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
4月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
65 10
|
4月前
|
XML 移动开发 前端开发
使用duxapp开发 React Native App 事半功倍
对于Taro的壳子,或者原生React Native,都会存在 `android` `ios`这两个文件夹,而在duxapp中,这些文件夹的内容是自动生成的,那么对于需要在这些文件夹中修改的配置内容,例如包名、版本号、新架构开关等,都通过配置文件的方式配置了,而不需要需修改具体的文件