React开发实践(9)实战部分 详情页和登陆功能开发

简介: React开发实践(9)实战部分 详情页和登陆功能开发

1、详情页面布局

1、details index.js 写基本样子
2、基本样子包括 DetailsWrapper Header Content
3、写对应的 style.js 
4、页面效果 
复制代码
  • index.js

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

  • style.js

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

2、使用 redux 管理页面数据

1、类似于 home 需要创建 几个基本文件 reducer 中定义初始数据
2、创建好之后 需要将 这个 reducer 放到根路径下的 大的reducer中 
3、然后页面使用 redux 中的数据 
4、查看页面内容 
5、
复制代码
  • reducer

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

  • index.js

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

  • 将这个小的 reducer 加到大的 reducer 下  放入之后页面 redux 可以看到数据

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

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

  • 页面使用 数据

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

  • 页面展示

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

3、异步获取 数据

1、需要新建一个 模拟数据 getDetails.json 放在 public 下
2、将 reducer.js 里的数据清除 放到 json 中
3、details index.js didMount 需要发请求 拿到数据
4、需要 触发 事件  
5、写 actionCreators.js 
6、更改 reducer.js 数据
7、更新 页面数据
复制代码
  • getDetails.json

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

  • details index.js didMount

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

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

  • actionCreators.js

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

  • reducer.js

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

  • contants.js

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

  • 页面效果 非常的nice ~

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

4、页面路由参数 如何传递 ?

  • 先说第一种动态路由的方式 获取参数
0、找到 List.js 页面 找到跳转到 details 页面的位置 
复制代码
1、App 页面 就需要传递参数 
2、然后 details index.js 拿到 url 上这个 id 并使用 
3、将这个 id 传递给 接口请求时
4、这样 点击不同的 item 发送请求 接口 就会携带 这样的 id 了 
复制代码
  • List.js

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

  • App.js

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

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

  • 然后点击 每个 item 就可 在 url 上展示 对应的数值

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

  • details index.js 拿到 url 的 id 并使用

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

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

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

  • 可以在发请求 时就可 传递这个 id 了

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

  • 非常 nice ~
  • 第二种方法
1、直接?id= 'id'
2、App.js 更改一下
3、details index.js 取数据方式 稍微改一下
复制代码
  • List.js

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

  • App.js

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

  • details index.js

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

  • 非常nice 页面依旧非常 正常

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

5、登陆页 布局开始

0、App.js 路由需要 配置一下 
1、新建 login 文件夹 index.js style.js
2、然后 style.js 写一些样式 引入
3、
4、
复制代码
  • App.js 路由配置一下

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

  • login index.js

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

  • style.js

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

  • 页面效果 展示

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

6、登陆功能实现  

1、需要在 login 下新建 store 文件夹 并添加需要的几个文件 
2、然后在 reducer 中 添加一个 字段叫 login
3、在 header index.js 引入这个字段 并判断 
4、需要将 login 的 reducer 放到 大的 store 下的 reducer 中
复制代码
  • store

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

  • reducer

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

  • 放到大的 store 中

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

  • header index.js

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

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

  • 接下来 需要 可以跳转到登陆页面
1、外层添加 Link 
复制代码
  • 外层加 link 使得点击登陆 可以跳转到登陆页面

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

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

  • 开始写 登陆页面的逻辑
1、先给两个 input 添加 ref 拿到 value 
  2、点击登陆时 需要添加点击事件
  3、点击事件触发 login 这个需要在 mapDispatchToProps 中定义
  * 模拟后端数据
  4、actionCreators.js 定义 action
  5、constants 定义常量 
  6、完善 reducer.js 处理 变量login 变成 true 
  7、
复制代码
  • 拿到 input 的值

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

  • 拿到账号密码

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

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

  • 触发 action

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

  • 模拟后端数据

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

  • actionCreators 产生 action

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

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

  • 再写一个 action 用来改变 reducer

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

  • reducer.js

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

  • 页面效果 非常nice 点击登陆 login变成 true 登陆--> 退出

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

  • 接下来需要解决 跳转  
1、如果登陆成功 跳转到 / 首页
  2、只需要 在 login 组件内拿到 login 这个值 
  3、使用这个值判断 是否 Redirect 到首页
复制代码
  • login 取值

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

  • 使用这个值

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

  • 此处有个注意点  Redirect 使用报错 改成 Navigate
  • 页面效果 非常nice ~
  • 接下来需要解决  退出  
1、header index.js 拿到 login 
  2、主要是需要引入 login 的 actionCreator 
  3、然后创建一个 logout 
  4、更改 reducer.js 的 login 变成 false
  5、页面效果 
复制代码
  • header index.js

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

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

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

  • logout

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

  • reducer.js

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

  • 页面效果 非常nice 点击 退出 可以变成登陆状态 ~

7、登陆鉴权 和 代码优化  

1、添加 登陆后 可点击写文章
 2、没有登陆 点击写文章时 去登陆页面 
 3、需要添加 一个 write 文件夹 并拿到 loginStatus 状态
 4、App.js 引入 这个路由 
 5、Header 里 Link to='/write' 包裹在 写文章外层 
复制代码
  • write  index.js

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

  • App.js

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

  • Header index

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

  • 未登陆时 点击写文章

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

  • 登陆时 点击写文章

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

  • 非常 nice ~

8、异步组件 及 withRouter 路由方法的使用

1、安装 yarn add react-loadable
 2、直接用这个 example 即可 details 文件夹下 添加 loadable.js 文件 
 3、需要修改一下 App.js
复制代码
  • 为什么要做的原因 ?

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

  • 添加 loadable.js 文件

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

  • 修改 App.js

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

  • 尝试当前效果

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

  • 此时 如果 有报错 关于 路由相关的 可以使用 withRouter  帮助这个组件拿到路由信息
  • 完结 撒花 🎉🎉🎉

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

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


相关文章
|
16天前
|
前端开发 JavaScript 程序员
开发语言漫谈-React
React同Vue一样,都是基于Javascript上的框架,不是独立语言
|
12天前
|
前端开发 iOS开发 Android开发
React Native跨平台开发实战:从零到一
学习React Native跨平台开发,首先安装Node.js和React Native CLI,设置Android/iOS环境。使用CLI创建项目,如`npx react-native init MyProject`。运行应用:`npx react-native run-android`或`run-ios`。编写组件,如在App.js中创建Hello World。添加样式,安装第三方库如react-native-vector-icons,使用react-navigation进行路由和导航。
20 2
|
18天前
|
前端开发 NoSQL JavaScript
基于 React + Nest 全栈开发的后台系统
这篇文章介绍了一个基于React+Nest全栈开发的后台系统XmwAdmin。项目包括前端和后端技术栈,线上预览地址和登录信息。作者推荐使用pnpm包管理工具和特定的环境依赖。文章提供了项目的运行和编译代码,以及各个功能模块的介绍。还包括演示图和项目活动以及总结部分。数据库下载链接也提供了,该项目已完成后台的核心功能。
基于 React + Nest 全栈开发的后台系统
|
19天前
|
缓存 前端开发 JavaScript
React适合开发什么类型的应用?
【5月更文挑战第27天】React适合开发什么类型的应用?
22 3
|
23天前
|
前端开发 JavaScript Android开发
使用React Native开发跨平台移动应用的技术详解
【5月更文挑战第22天】本文详述了使用React Native开发跨平台移动应用的技术,该框架由Facebook推出,基于JavaScript,支持iOS和Android。React Native通过JNI/JSI实现JavaScript到原生代码的转换,提供高效性能和原生体验。其优势包括跨平台性、原生体验、开发速度及社区支持。开发流程涉及环境搭建、项目创建、编码、调试与测试,以及构建与发布。注意事项包括性能优化、平台适配、利用第三方库和持续学习。React Native为开发者构建高质量跨平台应用提供了便捷途径,未来潜力无限。
|
28天前
|
缓存 前端开发 JavaScript
React和Next.js开发常见的HTTP请求方法
React和Next.js开发常见的HTTP请求方法
22 0
|
30天前
|
缓存 前端开发
Web开发:深入探讨React Hooks的使用和最佳实践
Web开发:深入探讨React Hooks的使用和最佳实践
25 0
|
30天前
|
存储 前端开发 JavaScript
React Hooks实战:从useState到useContext深度解析
React Hooks 深度解析:useState用于函数组件的状态管理,通过初始化和更新状态实现渲染控制;useContext则提供跨组件数据传递。useState的状态更新是异步的,不支持浅比较,可结合useEffect处理副作用。useContext在多层组件间共享状态,但可能导致不必要的渲染。两者结合可创建复杂应用场景,如带主题切换的计数器。了解其工作原理和优化策略,能有效提升React应用性能。
36 0
|
30天前
|
设计模式 前端开发 API
写出易维护的代码|React开发的设计模式及原则
本文对React社区里出现过的一些设计模式进行了介绍,并讲解了他们遵循的设计原则。
|
10月前
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
43 0