




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
首先想和你的就是lodash。在我看来,它是每一个前端开发者都应该熟练掌握的lodash提供了非常多的工具函数,就像一把强大的,能够满足各种前端开发需求,从而可以大大提高开发的效率。而且,lodash不仅能用在浏览器端,也可以用在NodeJS的开发中。所以说,掌握了lodash,也能提升NodeJS的开发效率。lodash使用keyBylodashkeyBy是我最常用的方法之一。通常来说,我们从API会拿到数组的一组数据,为了对数据进行操作,我们一般需要根据数据的某个属性,快速找到数组元素,而keyBy可以帮助我们快速做到这一点。2{3id:4name:5job:"ChiefMobility6city:"North78{9id:name:job:"InternalResearchcity:{id:name:job:"Lead city:"South20name为key的mapimport_fromconstbyName=_.keyBy(data,使用debounce在带有搜索框的页面里,我们通常会将搜索框的用户输入,保存为searchKey这样一个state,当searchKey发生变化的时候去刷新搜索结果。但是,如果每次用户敲击一下键盘都去刷新搜索,其实是没有必要的,因为用户很可能还没有输入完关键字。而且,多余的搜索,还有可能会引起输入过程的卡顿。为了解决这个问题,我们通常会使用防抖机制,也就是只有在用户停止输入后一个很短的时间内才进行搜索,比如说300毫秒,以保证更好的用户体验。而loash就专门提供了eboue这样的一个函数。代代123456789importReact,{useMemo}from"react";import_from"lodash";import{useSearchParam}from"react-functionSearchBox({data})constsearchKey=useSearchParam("key")||"";constfiltered=useMemo(()=>{returndata.filter((item)=>},[searchKey,//使用_.debounce处理用户输入,300msconsthandleSearch=_.debounce((evt)=>},return<divclassName="08-filter-<h2>Movies(Debounced<ulstyle={{marginTop:20{filtered.map((item)=><li实际的效果你也可以参考的示例course-20vzg。使用_.temte,实现简单的模板引123var123varcompiled=代te('<%_.forEach(users,function(user){%><li><%-compiled({'users':['fred','barney']//=>功能。这在我们需要去生成类似HTML、Markdown等大段的文档时,就会非常有用。此当然,lodash的功能远远不止于此,这里介绍的三个例子只是让你先对它有一个直观的了解和感受,的惊喜等待你自己去发掘。详细的API你可以去参考 UI库:AntDesignMaterialUIReact就是选择UI库了。这里我主要介绍两个常用的UI库。一个是MaterialUI(以下简称MUI)。它采用了的MaterialDesign的设计语言,提供了丰富的UI组件库。Ant.Design(AntD)Material虽然MUI是基于的MaterialDesign,但是它提供了非常灵活的定制功能,这也是区别于AntDesign的一大特色。这就意味着基于MUI有一个庞大的市场,你下图就是MUI官网提供的一些MUI实现了一个强大的系统,主要原因就在于使用了ReactContext和StyledComponent来实现JavaScript控制的动态系统,这也是它的基本原理。123456789importReactfromimportstyled,{ThemeProvider}fromimport{createMuiTheme}from'@material-import{palette,spacing,typography}from'@material-//使用JavaScriptconstBox=styled.div`${palette}${spacing}${typography}`;consttheme=createMuiTheme();exportdefaultfunctionDemo(){return(<ThemeProviderp={{xs:2,sm:3,md:4}}>}等,让你的组件就能够去适应各种不同的,从而保持UI样式的一致性。因此,如果你的应用对个性化的有比较高的需求,那么MaterialUI是不错的选择。虽然MUI很酷炫,但它也有一个很大的缺点:组件库中缺少一些高级的功能。比如复杂的Table、Tree等,通常都需要依赖第来实现,而不是MUI自身就包含的。我们都知道,Table和Tree是企业级应用最常用的组件。如果要依赖第,那质量和稳定性就参差不ToCToB如果是ToC,就用MUI,因为个性化的外观很重要。而如果是ToB,那就建议使用接下来要介绍的AntD,因为它就是面向企业级应用设计的,风格以极简为主,组件库更丰富,AntAntDesign在国内有很高的普及率,它使用TypeScript开发,提供了完整的类型系统;样式则是使用Less去实现。而且它的单元测试覆盖率超过99%,因此功能非常稳定,这下图就显示了AntD提供的一个管理系统的模板AntD提供了各种高级组件,可以满足企业级的复杂交互应用场景。下能对于企业级的大数据量的UI展现提供了很好的支持。消息和框:AntD提供了非常易用的API用于一些快速的状态反馈。比如Modal.success用于显示一个弹出框;message.success用于显示一个顶部的自动的反馈消息;notification.open则用于显示一个通知栏消息,等等。当然,这些只是整个AntDUI库的一小部分功能,但我们已经可以看到它面向企业级应用的设计原则,它将重点放在了提供开箱即用的高级组件上,以提高开发效率。那么更完整的API,你可以去参考文档。ReactHooksReactVadimDalecky将一些常用的需求封装成了可重用的Hooks,方便了React的开发。这个就是react-use库,提供了各种的工具Hooks,了解并熟练使用它们,可以节省很多重复的工作量。Hooks吧:其实面第8讲你已经看到了这个Hook的用法,就是用于获取URL中的查询字符1constsearchKey=这样,你就能获得key如果用DOM的原生API去绑定,通常我们需要在组件创建时去,再在组件销毁时取消,比较繁琐。而useEvent这个Hook封装了这部分逻辑,让我们使用起来非11useEvent('keydown'这样的话,我们就可以在页面上键盘按键的,而无需关心该在何时绑定,以及何时取消。 API使用起来很不方便,需要自 的值,而use 。1const[value,,]=需要注意的是,这里的Hook的作用域仅限于当前组件。如果 改,则是无法触发当前组件的刷新的。你可以把这个Hook的作用看作是跟useState类似的,只是State的值是持久化在 这个Hook可以让你获取某个State的上一个值,有时我们需要比较前后值的变化,这时我们就能感受到usePrevious这个Hook的好用了。const[count,setCount]=//获取coundconstprevCount=这节课我们主要介绍了React生态圈的四个常用工具库。主要的学习目的呢,就是为了让你对有助于React开发的重要项目做一个了解,从而避免在遇到一些需求时,自己费了很这里尤其要强调的是lodash。虽然它和React没有必然的关系,但是lodash非常擅长数据结构的各种转换,因此对React中的状态管理非常有帮助。那么熟悉它的API,自然也虽然这节课我只介绍了几个工具库,但是整个开源生态是非常庞大的,你在开发过程中也一定会去使用各种开源的项目。那么在这里我也和你一下开源项目选择的几个考虑因素。把 tar和npm量作为参考指标:通常来说,越流行的项目也意味着更高的质量。如果一个项目开源了很久,而每周却只有几十个量,那你就要慎重考虑了。欢迎的想法和思考在留言区,我会和你交流讨论。也欢迎把课程给你的朋友给需要的人,Ta订阅后你可得20赞2 不得售卖。页面已增加防盗追踪,将依法其上一 18|单元测试:自定义Hooks应该如何进行单元测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学校元旦活动方案模板
- 2025年度社区综合治理工作方案书
- 一年级语文下册亮点大试卷电子版
- 2025年电动胡须刀片项目可行性研究报告
- 2025年瓷盆清洁剂项目可行性研究报告
- 2025年珍迪消食片项目可行性研究报告
- 2025年特级黑蜡项目可行性研究报告
- 2025年牙龈保护剂项目可行性研究报告
- 沈阳工学院《数学选讲》2023-2024学年第二学期期末试卷
- 武汉城市学院《戒毒学》2023-2024学年第二学期期末试卷
- 《发作性睡病》课件
- 人教PEP版(一起)(2024)一年级上册英语全册教案(单元整体教学设计)
- 家乡美食论文开题报告
- 江苏省盐城市2024-2025学年高三上学期11月期中考试 地理 含答案
- 肝胆外科术前宣教
- 百果园水果店加盟协议书范文
- 基于生成对抗网络的图像分类方法
- DB11T 219-2021 养老机构服务质量星级划分与评定
- 重度哮喘诊断与处理中国专家共识(2024)解读
- 干部家庭社会关系登记表
- 2024年上半年教师资格证《高中音乐》真题及答案
评论
0/150
提交评论