【前端资讯】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


相关推荐

  • 恢复anaconda环境, 卸载anaconda, 重装anaconda

    恢复anaconda环境, 卸载anaconda, 重装anaconda1 删除 anaconda 的文件夹根据 anaconda 的安装位置 删除 anaconda 文件夹 一般情况下存放在 下 如果忘记安装位置 可以执行 whichconda 查找安装路径 以 anaconda3 为例 使用的 python3 rm rf anaconda32 在环境变量中删除 anaconda 打开 bashrc 例如 vim bashrc 找到与 conda

    2026年3月17日
    2
  • JS中innerHTML、outerHTML、innerText、outerText的用法与区别

    JS中innerHTML、outerHTML、innerText、outerText的用法与区别1、功能说明:innerHTML设置或获取位于对象起始和结束标签内的HTMLinnerText设置或获取位于对象起始和结束标签内的文本outerHTML设置或获取对象及其内容的HTML形式outerText设置(包括标签)或获取(不包括标签)对象的文本2、示例页面有如下代码:span1span2varinnerHTML=document.getElemen

    2022年6月16日
    31
  • centos7安装python3.8_centos python3安装

    centos7安装python3.8_centos python3安装centos7自带版本是python2.7centos8是自带python3的如果要用的3.0以上的版本需要手动安装,下载地址:https://www.python.org/ftp/python/1、先查看系统python的位置在哪儿whereispythonpython2.7默认安装是在/usr/bin目录中,切换到/usr/bin/cd/usr/bin/llpython*从下面的图中我们可以看到,python指向的是python2,python2指向的是python2.7,因此

    2026年3月11日
    4
  • 关于图像特征提取

     网上发现一篇不错的文章,是关于图像特征提取的,给自己做的项目有点类似,发出来供大家参考。      特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。特征的定义       至今为止特征没有万能和精确的定义。特征的精确定义往往

    2022年4月9日
    44
  • 0元搭建卡盟主站_万能卡盟

    0元搭建卡盟主站_万能卡盟删除对象功能说明删除指定桶中的对象。方法定义1.ObsClient->deleteObject(array$parameter)1.ObsClient->deleteObject(array$parameter,callable$callback)请求参数删除桶功能说明删除桶,待删除的桶必须为空(不包含对象、历史版本对象或分段上传碎片)。方法定义1.Ob…

    2022年8月12日
    7
  • 极限学习机(Extreme Learning Machine)概述

    极限学习机(Extreme Learning Machine)概述摘要当今研究领域的一项事实就是,前向神经网络(feed-forwardneuralnetworks)的训练速度比人们所期望的速度要慢很多。并且,在过去的几十年中,前向神经网络在应用领域存在着很大的

    2022年8月4日
    8

发表回复

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

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