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


相关文章
|
25天前
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
64 3
React DnD:实现拖拽功能的终极方案?
|
15天前
|
移动开发 前端开发 JavaScript
React 表单验证实战
【10月更文挑战第25天】本文介绍了 React 表单验证的常见方法,包括原生 HTML5 验证、自定义验证逻辑和第三方库(如 Formik 和 Yup)的使用。通过具体代码示例,详细讲解了每种方法的实现步骤,并探讨了常见问题和易错点及其解决方法。旨在帮助开发者提高表单验证的有效性和安全性。
52 8
|
2月前
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
115 1
react项目配合diff实现文件对比差异功能
|
1月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
54 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
前端开发 JavaScript
React配合axios请求拦截校验session,403跳转至登陆页面
React中使用axios进行请求拦截,通过自定义事件监听和响应拦截实现403状态码时的自动登录页面跳转。
84 2
|
2月前
|
前端开发
React 中购物车功能实现(全选多选功能实现)
React 中购物车功能实现(全选多选功能实现)
37 2
|
2月前
|
存储 移动开发 前端开发
初探react,用react实现一个todoList功能
该文章通过创建一个TodoList应用来介绍React的基础知识,包括环境搭建、组件创建、状态管理和事件处理,并演示了如何使用React Hooks来优化组件逻辑。
|
3月前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
55 0
|
3月前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`<h:inputText>`、`<h:dataTable>`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
42 0