几天不写React,已经看不懂语法了

几天不写React,已经看不懂语法了,大家好,我卡颂。,下面这个React组件代码,用到3个use关键词,你理解他们的作用吗?,真是几天不写React,语法都看不懂了。本文就来聊聊这几个use关键词各自的意义。,首先是位于代码顶部的’use client’声明,使用方式类似于严格模式的声明:,’use client’声明是RSC(React Server Component,服务端组件)协议中的定义。,启用了RSC的React应用,所有组件默认在服务端渲染(可以通过Next v13体验),只有声明’use client’的组件文件,会在前端渲染。,假设我们的React应用组件结构如下,其中红色代表「服务端组件」,蓝色代表「客户端组件」(声明’use client’):,几天不写React,已经看不懂语法了,那么当应用打包后,D、E组件会打包成独立文件。在前端,React可以直接渲染A、B、C组件。但是对于D、E,需要以JSONP的形式请求回组件代码再渲染。,完整执行逻辑如下:,几天不写React,已经看不懂语法了,接下来是data变量前的using关键字:,using关键字是tc39提案ECMAScript Explicit Resource Management[1]提出的,用于为各种资源(内存、I/O等)提供统一的生命周期管理(何时分配、何时释放等)。,同时,TS v5.2率先引入了这个关键字。所以,接下来的讲解我们以TS中的using关键词为准。,using的作用有点类似useEffect的destroy函数。当我们在useEffect的create函数绑定了事件后,可以在destroy函数解绑:,类似的,当我们通过using关键词声明一个包含[Symbol.dispose]方法的对象后,当离开当前作用域时,声明的[Symbol.dispose]方法会执行:,在[Symbol.dispose]方法内主要执行一些释放资源的操作。,比如,当我们操作数据库时,如果要考虑「操作完断开数据库连接」,可能会写出如下代码:,如果使用using关键词,代码如下:,配合async await使用,可以降低「由于忘记释放资源造成内存泄漏」的可能性。,最后是React v18.3之后发布的新原生hook —— use:,这个hook可以接收两种类型数据:,此时use的作用与useContext一样。,此时如果这个promise处于pending状态,则最近一个祖先<Suspense/>组件可以渲染fallback。,比如,在如下代码中,如果<Cpn />组件或其子孙组件使用了use,且promise处于pending状态(比如请求后端资源):,那么,页面会渲染如下结果:,当请求成功后,会渲染<Cpn />。,对于开篇提到的代码:,表示:,一个文件,三款use相关语法,你是不是已经懵逼了呢?,[1]ECMAScript Explicit Resource Management:https://github.com/tc39/proposal-explicit-resource-management。

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/27980.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年6月23日
下一篇 2023年7月15日