【前端资讯】React v16.6 发布[通俗易懂]

【前端资讯】React v16.6 发布[通俗易懂]【前端资讯】React v16.6 发布

大家好,又见面了,我是你们的朋友全栈君。

本文转自 FEPulse 公众号(微信搜索 FEPulse,精选国内外最新前端资讯,为你把握前端脉搏)。

React v16.6 发布,包含一些便捷的功能,我们对此进行梳理。

React.memo

React.memo 是一个高阶组件,类似于 React.PureComponent,但参数是函数组件而不是类组件。

纯函数的意思是传入同样的输入应该得到同样的输出,对应的,对于一个函数组件而言,如果传入同样的 props,渲染结果也应该一样的话,那么使用 React.memo 包裹这个函数组件则可以获得较大的性能提升。

原理是 React 会对传入的 props 进行浅比较,如果 props 没有变化,则直接返回上一次渲染结果,避免重复渲染。你也可以在 React.memo 的第二个参数中定制自己的比较逻辑。

这里有个小插曲,在起名上,有人问为啥不叫 React.pure,而叫 React.memo 呢?对此,React 的作者 Dan 对此回应:React.memo 中的 memo 是 memoization,即缓存的意思,React.memo 赋予了函数组件缓存的能力,并且 memoization 太难拼写,因此这个方法最终被称为 React.memo。

React.lazy: Code-Splitting with Suspense

Suspense 最初是由 Dan 在今年 3 月份的 JSConf Iceland 2018 中提出,我们对此也做了详细介绍: 【前端资讯】React 的未来:Time Slicing 和 Suspense

从 v16.6 开始,你可以使用 Suspense 组件和 React.lazy 方法做 Code Splitting。

需要注意的是,这种使用方式还不支持 SSR。

static contextType

从 v16.3 开始,React 引进了 new Context API,但发布之后反馈不太理想,使用起来比较困难,因此从 v16.6 开始添加了一个便利的 API 来使用类组件中的 context value。

static getDerivedStateFromError()

React v16 引入了 Error Boundaries 来处理渲染时抛出的错误,同时错误发生时也会触发 componentDidCatch。在触发之前,错误的组件将被当做 null 处理,但这可能不符合父组件的 ref 不能为 null 的预期。同时,它也无法从服务器上的错误中恢复,因为 Did 开头的生命周期方法在服务器端并不会触发。

因此,React v16.6 添加了 static getDerivedStateFromError(error) 方法,允许开发者在 render 完成之前渲染 Fallback UI。这个生命周期函数触发的条件是子组件抛出错误,然后 getDerivedStateFromError 接收这个错误参数后更新 state。

Deprecations in StrictMode

弃用了 StrictMode 中的两个 API:ReactDOM.findDOMNode() 和 Legacy Context。

转载于:https://juejin.im/post/5bd26c9351882529306e0857

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107233.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月20日 下午8:20
下一篇 2022年4月20日 下午8:40


相关推荐

  • ODPS 下一个map / reduce 准备

    ODPS 下一个map / reduce 准备

    2022年1月2日
    40
  • MQTT服务器搭建以及构建服务端和客户端

    MQTT服务器搭建以及构建服务端和客户端MQTT介绍MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备:轻量级的消息订阅和发布(publish/subscribe)协议建立在TCP/IP协议之上IoT,internetofthings,物联网,MQTT在这方面应用较多。MQTT协议是针对如下情况设计的:M2M(MachinetoMachi…

    2022年4月30日
    125
  • Chrome 添加自定义搜索引擎「建议收藏」

    Chrome 添加自定义搜索引擎「建议收藏」在Chrome浏览器地址栏输入:chrome://settings/searchEngines进入管理搜索引擎点击其他搜索引擎右上角的“添加”按钮在输入界面自定义你的引擎,比如我这里添加了PIP的清华镜像点,以便于搜索我想要的第三方库该搜索引擎是通过关键字触发的,比如我用的“-pip”关键字在地址栏输入“-pip”,按tab键即可触发…

    2022年7月13日
    47
  • Java Volatile Keyword

    Java Volatile Keyword这几天学习Java内存模型,查看文章:JSR133(JavaMemoryModel)FAQ里面介绍了新的Java内存模型对volatile关键字的修订,因为只是一个FAQ,并没有很详细的解析volatile关键字的用法,找到一篇文章JavaVolatileKeyword详细的介绍了volatile适用的场景以及不适用的场景,翻译一下主要内容:…

    2022年7月18日
    16
  • html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕[通俗易懂]

    html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕[通俗易懂]滚动字幕在FrontPage的组件里有,但是FrontPage这个软件只能支持单行文字,一出现多行文字它就无能为力了,而且它只能支持一行滚动!(如果出现只能滚动一行的情况,解决办法是把这段代码嵌入到JavaScript的document.write里面,请看下面例的详细说明)Dreamweaver也只能用编写HTML代码的方法。所以强烈建议用记事本打开网页源代码来编辑。1.建立第一个滚动字幕。代码…

    2022年6月9日
    40
  • linux查看并杀死进程_ubuntu查看进程命令

    linux查看并杀死进程_ubuntu查看进程命令今天在netbeans中关闭webrick时,发现没有关闭掉,打入localhost:3000依然显示页面,发现无法从nb中再次关闭只有进入ubuntu的进程下关闭查看进程:1,ps-e命令2,feng@feng:~$sudonetstat-antupActiveInternetconnections(serversandestablished)ProtoRecv-QSe…

    2026年2月8日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号