【青训营】-🐳React实战(下)

简介: 【青训营】-🐳React实战(下)

2d3ef3f769af4471b616ab79f81461a7_tplv-k3u1fbpfcp-zoom-crop-mark_3024_3024_3024_1702.gif

前言


到目前为止,笔者一直都是用Vue框架开发项目,由于最近参加了字节青训营嘛,课程中学习的框架是React,索性跟着老师来学习一下React,写了这样一篇笔记,如果有和我一样一直在用Vue而没有接触过React的同学欢迎来阅读哇~👏


Redux


Redux是什么?


Redux是一个全局状态管理中心,里面保存了状态和状态的管理逻辑 随着组件的逻辑越来越复杂,我们需要专门引入一层来做状态管理相关的事情,Redux就是这样的一层,类似于Vuex。 看下面这个例子:


7a1085022af0453aa5f17d9d42ead6e1_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


通过点击事件触发状态的更新。


Redux中的数据流


df4a40a8ced64dcea324a05e755ef9c3_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Redux会把Action和State这两部分的工作负责起来,组件需要修改State的时候可以调用Redux中提供的Action,通过Action更改State。


什么时候使用Redux?


当应用足够大,较复杂的时候需要共享状态或者组件需要频繁进行状态共享适合用Redux。


Redux中的术语


Store:存储全局状态


81e4216538434f60b74fdaf2384440eb_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Action:描述状态发生的变化


30475702488e479f875af5330d98a6a4_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Dispatch:发送一个Action


637e5e8eb8ea4668913ffedbdfdd1fc1_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Reducer


根据当前应用状态,和接受的action,计算新的状态。


3bd43bf5811f4e318dc36262cbdb4a5f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Redux更新状态的具体流程可见下面动图:


9c7d02a706fc4c2db4fce4d360555962_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.gif


Redux Toolkit(RTK)


RTK是基于Redux的上层封装库,基于常见业务场景,提供了更加简洁的API,简化Redux的使用复杂度。


创建store

80a0c50c6b7b47cdb8d2068a4c23a10c_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


创建slice


一个slice模块,包含了管理一个子状态所需的所有逻辑(state、actions、reducer等)


4e06582d95734930ab7a3b405c5d6ec0_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


slice实例


29cf4c54184a48f5809694dbd87ddc26_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


reducer必须是纯函数


fcce951fdb8c4d2b9e5183b5642cb14e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


slice使用


获取state

bcc170e14cb44bada3d7ae467aa45b72_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


修改state


b029c437a7634b79b9ac5f90cb8421ce_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


store中的状态放在哪里?


2804a03f8d0c44d1ae9982431aef89d8_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


抽象带来的复杂度和收益不成正比:


  1. 原本可以直接使用的API数据结构需要额外经过2层转换
  2. JS模拟数据库表管理的复杂性,并没有真正的数据库工具做管理


服务端 状态


大部分场景下,API数据是不需要进行扁平化处理的。服务端数据的同步问题,应该交由服务端处理,而不是在前端重复后端工作。API数据的缓存问题,应该由专门的解决方案解决。


其他状态管理方案


  • RTK Query
  • Recoil
  • Context + Hooks


最后


⚽本文介绍了redux的概念和使用及相关知识~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘

相关文章
|
15天前
|
移动开发 前端开发 JavaScript
React 表单验证实战
【10月更文挑战第25天】本文介绍了 React 表单验证的常见方法,包括原生 HTML5 验证、自定义验证逻辑和第三方库(如 Formik 和 Yup)的使用。通过具体代码示例,详细讲解了每种方法的实现步骤,并探讨了常见问题和易错点及其解决方法。旨在帮助开发者提高表单验证的有效性和安全性。
52 8
|
1月前
|
前端开发 数据安全/隐私保护
前端技术实战:React Hooks 实现表单验证
【10月更文挑战第1天】前端技术实战:React Hooks 实现表单验证
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
54 10
React技术栈-react使用的Ajax请求库实战案例
|
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
|
3月前
|
前端开发 API 开发者
【React状态管理新思路】Context API入门:从零开始摆脱props钻孔的优雅之道,全面解析与实战案例分享!
【8月更文挑战第31天】React 的 Context API 有效解决了多级组件间状态传递的 "props 钻孔" 问题,使代码更简洁、易维护。本文通过电子商务网站登录状态管理案例,详细介绍了 Context API 的使用方法,包括创建、提供及消费 Context,以及处理多个 Context 的场景,适合各水平开发者学习与应用,提高开发效率和代码质量。
39 0
|
3月前
|
前端开发 JavaScript 数据管理
React Formik入门:简化表单处理的神器——全面掌握Formik在React表单开发中的高效应用与实战技巧
【8月更文挑战第31天】在React应用中,表单处理常常因繁琐而令人头疼。Formik作为一个开源库,专为简化React表单设计,减少冗余代码并提升处理效率。本文介绍Formik的使用方法及其优势,通过示例展示如何安装配置并创建基本表单,帮助开发者轻松应对各种表单需求。
43 0
|
3月前
|
前端开发 JavaScript 开发者
【前端革新力】React与CSS-in-JS完美邂逅:从styled-components到emotion,全面解析样式管理新趋势的实战应用与优势剖析!
【8月更文挑战第31天】CSS-in-JS 作为一种新兴的样式管理方式,近年来在前端社区受到广泛关注。它将样式嵌入 JavaScript,实现了样式与逻辑的高度耦合,提升了开发效率并解决了全局样式污染等问题。本文通过具体代码示例,探讨 CSS-in-JS 在 React 开发中的应用,并分享实践心得。首先介绍了 CSS-in-JS 的基本概念,然后详细展示了如何使用 styled-components 和 emotion 这两个流行库创建样式化组件。
153 0
|
3月前
|
前端开发 API
[译] 实战 React 18 中的 Suspense
[译] 实战 React 18 中的 Suspense
|
4月前
|
前端开发
React Hooks实战技巧:提升你的组件开发效率
【7月更文挑战第16天】React Hooks为React开发带来了革命性的变化,使得函数式组件更加强大和灵活。通过掌握上述实战技巧,你可以更高效地编写清晰、可维护和可复用的React组件。希望这些技巧能帮助你在React开发之路上走得更远。