WEB程序员笔记

一个前端开发工程师的个人博客

Create-react-app v3.3.0发布

大约7天前发布了新版本的CRA,但我莫名其妙地错过了令人振奋的消息,并立即发现了这一消息。因此,这里是最激动人心的更新的简短摘要,以防万一您也错过了它。

链接到本文末尾的发行说明!

自定义模板

允许社区构建和共享自己的React Boilerplates,并在需要时使用其他模板。

npx create-react-app my-app --template typescript

如果您未指定特定模板,它将默认使用我们都知道并喜欢♥️的众所周知的基本模板。

可选链接

或来自CoffeeScript的Elvis运算符

就个人而言,我一直在等待默认情况下包含此功能已有很长时间。该功能非常有用,因为有时访问JS对象中的深层嵌套值可能会很痛苦。

它允许开发人员使用如下?符号访问嵌套值:

const data = a?.b?.c?.d;

如果其中任何一个都不存在,则当前JS引擎将抛出Uncaught TypeError…,但是通过可选的链接,它的行为有所不同,它将默认设置为undefined

以前,开发人员曾经&&使用过深层嵌套的值:

const data = a && a.b && a.b.c && a.b.c.d;

这种方法很难看懂,很容易成为噩梦。另一个解决方案是来自库的帮助程序功能,例如lodash

const data = get(a, [b, c, d], defaultValue);

这种方法的问题在于,您不能使用IntelliSense来访问必须以字符串形式提供路径的值。

可选链接建议目前处于第4阶段,这意味着最终它会被JS引擎本机采用,因此,此功能值得学习,并让您习惯👀。

您可以在此处的提案官方页面上找到更多详细信息:https :
//github.com/TC39/proposal-optional-chaining

Nullish凝聚

当访问嵌套在对象中的值时,在某些情况下,如果对象中的值为null或,我们希望使用默认值undefined

当前最常用的(和幼稚的)方法是:

const data = a.b.c.undefinedValue || default value;

在大多数情况下,此方法都可以正常工作,但是由于在JavaScript中我们有falsy值,因此上述代码将在default value时使用undefinedValue一个为空字符串,数字0或的false。有时,这种行为是错误的,可能会产生意想不到的结果(和有趣的结果)。

所以Nullish合并运算符是在这里处理对检查undefinednull正确的案件。

const data = a.b.c.undefinedValue ?? default value;

的价值datadefault value只有当价值undefinedValueundefinednull

您还可以将Optional Chaining运算符与Nullish Coalescing运算符结合使用,以更好地控制结果:

const data = a?.b?.c?.d ?? default value;

Nullish Coalescing运算符当前处于阶段3,这意味着它很可能会成为本机运算符。绝对值得您花时间学习和习惯!
https://github.com/tc39/proposal-nullish-coalescing

数值分隔符

对于我来说,这并不是最令人兴奋的功能,因为我通常不会处理大量数字,但是我相信其他人会发现此功能很有用。

_出于可读性考虑,它允许开发人员使用(下划线)分隔大数字。

const number = 1000000000; // It is pretty hard to read this number

但是现在它可以方便地写为:

const number = 1_000_000_000; // Definitely much easier to make sense of it

您可以在此处找到有关此建议的更多信息:https :
//github.com/tc39/proposal-numeric-separator

结论

我知道这个帖子似乎更像是一个新的JS特性的帖子,而不是太多的React特有的,但是有一个特殊的原因让我对这个版本的CRA感到兴奋。
React社区是JS世界上最大的社区之一,React团队采纳这些建议对JS作为编程语言是一个巨大的推动。我发现有趣的是,作为一个社区,我们如何影响世界上最常用的语言之一的发展,这就是为什么此更新对我而言尤其令人兴奋。

在下面的评论中,很高兴听到您对这些更改以及React社区对JS语言的影响的意见。

PS:我没有涵盖v3.3.0中的所有更改,但您可以在此处找到所有详细信息:https :
//github.com/facebook/create-react-app/releases/tag/v3.3.0

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注