[译] 如何在React中写出更优秀的代码

目录

  • 我们先来看 Linting
  • 利用组件模块性、复用性和组合性
  • propTypes 和 defaultProps
  • 知道何时创建新组件
  • 组件 vs 纯组件 vs 无状态函数组件
    • 无状态函数组件
    • 纯组件
  • 使用 React 开发工具
  • 使用内联条件语句
  • 尽可能使用代码片段库
  • React 本质 - 学习 React 是如何工作的
  • 快速回顾

在React中写出更好代码的9条建议:学习关于 Linting, propTypes, PureComponent 等.

Rajat S · 2018 年 4 月 18 日 · 阅读时长约 8 分钟

React 使得创建交互型 UI 变得轻松。在你的应用中为每个状态(state)设计好简单视图(view)后,React 会在数据变化时高效地更新和渲染正确的组件。

在本文中,我会给你几条帮助你成为更好的React开发者的建议。我会谈及从工具化到实际编码风格的一系列方面,从而提高你的 React 技能。??

我们先来看 Linting

写出好代码很重要的一条就是好的 linting 。因为如果我们设置了一系列合适的 linting 规则,代码编辑器将能够捕捉到你代码中会引发潜在问题的一切。

除了发现问题之外,ES Lint 的设置会一直提醒你 React 的最佳实践。

拿上述代码片段来说,假设你想要在 render() 函数中引用一个叫 this.props.hello 新的属性,你的 Linter 会立马变红并显示:

'Hello' is missing in props validation (react/prop-types)

Linting 会帮你意识到 React 最佳实践,形成你对代码的理解。很快,当你写代码时你就会避免犯错了。

你可以前去 ESLint 为你的 JavaScript 设置一套 linting 工具集,或者你也可以使用爱彼迎 JavaScript 格式指南。你也可以安装 React ESLint 包.

利用组件模块性、复用性和组合性

使用像 Bit 这样的工具,基于可重用组件更快速地构建模块化的应用。

你可以使用 Bit 快速地分享和组织你所有的 React 组件,以供其他任何项目使用和开发。

React spinners with Bit: choose, play, install

Bit 帮助你从任何项目隔离和分享组件。然后,它们就变成了可重用的”乐高积木“,你可以在任何地方寻找,试用和使用它们。

Bit 是一个非常棒的平台,使组件可重用性成为一种用更少时间构建更多应用的方式。

propTypes 和 defaultProps

在本文前几节,我谈论了当我试着传递一个无效属性的时候,我的 linter 是如何工作的。

这里,如果说 userIsLoaded 不是必需的,那么我们需要在我们的代码中添加如下的代码:

static defaultProps = {
  userIsLoaded: false,
}

所以任何时候我们的组件中使用到 PropType,我们都需要给它设置一个 propType。例如,我们需要告诉 React userIsLoaded 总是一个布尔值。

再说回来,如果 userIsLoaded 不是必需的,那么我们将需要有一个默认属性。如果它是必需的话,那么我们就不需要为它定义一个默认属性。然而,这条规则也说明了你不应该有模棱两可的 propTypes,比如对象或数组类型。

这就是为什么我们用 shape 来验证 user的原因:user 中有另一个 id,它是 string 类型,整个 user 对象也是必需的。

确保在每个使用 props 的组件上设置 propTypesdefaultProps 会很有帮助。

一旦那些属性没有获取到它们期望的数据,你的错误日志将让你知道你要么传错了,要么你还没有传要传的(属性),使得发现错误变得很容易,特别是当你正在写许多可重用的组件时。这同时也使它们更加的自说明(self-documenting)。

注意

跟 React 的早期版本不同的是,propTypes 不再包含于 React 中,你需要将其作为依赖单独添加到你的项目中。

点击这里了解更多。

知道何时创建新组件

这里我有一个叫 Profile 的组件。在这个组件里还有其他的组件,比如 MyOrderMyDownloads。现在,我可以用内联的方式来写所有的这些组件。因为,我只是从相同的地方(user)获取数据,将所有的小组件转换成一个大组件。

尽管在何时将你的代码变成一个组件的问题上没有一成不变的规则,问问自己:

  • 你的代码功能正在变得笨重吗?
  • 它有没有重复自己?
  • 你打算重用你的代码吗?

如果任何一个问题的答案是肯定的,难么你需要将你的代码移到一个组件中。

==谨记,任何人都不想在你的代码中看到的是一个巨型的200行到300行的花哨组件。==

组件 vs 纯组件 vs 无状态函数组件

对 React 开发者来说,知道何时在代码中使用组件纯组件,和无状态函数组件很重要。

你可能已经注意到我再上述代码片段中,我没有将 Profile 声明为一个组件,我称它为纯组件。

首先,让我们来看看无状态函数组件。

无状态函数组件

无状态函数组件是你的组件武器库中最常用的类型之一。它们给我们提供了一种美好简洁的方式来创建组件,而不使用任何类型的状态引用,或者生命周期方法

无状态函数组件的意思是它是无状态的一个函数。这点好在你将组件定义成了一个返回一些数据的函数。

简单来说,无状态函数组件就是返回 JSX 的函数。

更新:React 最新版本给我们带来了 React hooks,让我们可以在函数组件中使用状态,副作用和引用,而无需将它们转换成类组件。

纯组件

通常,当一个组件接收到一个新属性的时候,React 将会重新渲染那个组件。但是有些时候,组件接收到的新属性并没有改变,但是 React 仍然触发重新渲染。

使用纯组件 PureComponent 将会帮你避免这种浪费的重新渲染。比如,如果一个属性是字符串类型或者布尔类型,并且改变了,纯组件将会识别到(该变化)。但是,如果一个对象的属性变了的话,纯组件是不会触发重新渲染。

所以你怎么知道 React 在什么时候触发了不必要的重新渲染?你可以看看一个很赞的 React 包,叫做 Why Did You Update。当一个很有可能是不必要的重新渲染发生时,这个包会在控制台通知你。

一旦你识别到一个不必要的重新渲染,你可以使用纯组件而不是组件来防止不必要的重新渲染。

使用 React 开发工具

如果你对成为一个专业的 React 开发者是认真的,那么在你的开发过程中使用 React 开发工具应该是很平常的一件事。

如果你用过 React,很有可能你的控制台曾向你抱怨过要使用 React 开发工具。

React 开发工具在所有主流浏览器上(比如 Chrome 和 Firefox)都可用。

React 开发工具使你能够访问到你的 React 应用的整个结构,让你看到应用中正在使用的所有属性和状态。

React 开发工具是探索我们 React 组件的一种很不错的方式,也有助于诊断出你应用中的任何问题。

使用内联条件语句

这个观点可能会引起一些人的不适,但是我发现使用了内联条件语句,我的 React 代码变得颇为整洁。

看下面的代码片段:

这边我有一个很基本的函数:调用了判断一个人是不是"affiliate"的检查,并接着一个叫 <MyAffiliateInfo /> 的组件。

这样的做的好处是:

  • 我不必写一个单独的函数。
  • 我不必在我的渲染函数中写另外一个 ”if“ 语句。
  • 我不必在我的组件中的某处创建一个”链接“。

写内联条件语句相当简单。你可以先写条件语句。你可以说返回 true,那么它将会一直显示 <MyAffiliateInfo /> 组件。

接下来我们用 && 来链接该条件语句和 <MyAffiliateInfo />。这样的话,该组件将只有在条件语句返回 true 的情况下被渲染。

尽可能使用代码片段库

打开一个代码编辑器(我使用 VS Code),创建一个 .js 文件。

当你在这个文件里输入 rc ,你将会看到像这样的提示:

按下 enter 键, 你将会立即看到:

这些代码片段的好处不仅是它们帮助你避免可能的 bug,而且帮助你识别出最新的最好的语法。

有许多不同的代码片段库可以被安装到你的代码编辑器中。我在 VS Code 中用到的叫做 ES7 React/Redux/React-Native/JS Snippets.

React 本质 - 学习 React 是如何工作的

React Internals 是一个分为五部分的系列文章,帮助我理解了 React 中最基本的部分,从而最终帮助到我成为一个更好的 React 开发者。

如果你有可能还没能完全理解的问题,或者你理解了 React 是怎么工作的,那么 React Internals 会帮助到你理解何时以及如何在 React 中做正确的事。

这对那些有了想法但是还不知道在哪里执行他们的代码的人特别有帮助。

理解 React 如何工作的基础将会助你成为更好的 React 开发者。

快速回顾

  1. 找一些好的 Linting。使用 ES Lint,爱彼迎 JavaScript 风格指南,以及 ES Lint React Plugin。
  2. 使用 propTypes 和 defaultProps。
  3. 知道什么时候创建新组件。
  4. 知道什么时候写组件,纯组件和无状态函数组件。
  5. 使用 React 开发工具
  6. 在你的代码中使用内联条件语句
  7. 使用代码片段库来节省浪费在写模板代码上的大量时间。
  8. 用 React Internals 来学习 React 是如何工作的。
  9. 使用像 Bit / StoryBook 这样的工具来改善组件开发流程。

原文:How to write better code in React

原文地址:https://www.cnblogs.com/myvgo/p/11144942.html

时间: 2024-10-13 07:31:51

[译] 如何在React中写出更优秀的代码的相关文章

【整洁之道】如何写出更整洁的代码(上)

如何写出更整洁的代码 代码整洁之道不是银弹,不会立竿见影的带来收益. 没有任何犀利的武功招式,只有一些我个人异常推崇的代码整洁之道的内功心法.它不会直接有效的提高你写代码的能力与速度,但是对于程序员的整个职业生涯必然会带来意想不到的好处. 如果你还是一个在校学生,或者是刚工作没多久的"菜鸟",那么很有必要接触一些这方面的知识的.很显然,它会帮助你更快的适应企业级开发的要求. 1. 为什么需要代码更整洁? 在考虑代码整洁的时候,我们需要明确的一个前提是,这里不讨论代码的对错. 关于什么是

掌握解决问题的艺术,学会迭代开发,成为协作开发的专家,然后为写出更好的代码而担忧(转)

很多开发人员普遍犯有一个错误,认为他们的工作就是写代码.这不是一个开发人员要做的事情. 一个开发人员的工作是解决问题. 解决问题的一部分过程通常涉及到写代码,但是这部分工作是非常非常小的.开发有用的东西才花更多时间. 明白如何迭代开发,随着对问题有更好的理解,你才能给难题增加一些小功能,因为从头开发完美的产品是不可能的.不用写代码就能验证功能,因为很明显,写代码是相当昂贵的. 用于测试.评测和抛弃想法的系统也是极其重要的,因为要是没有它,整个开发组将耗费越来越多的精力,还有用来帮助他们执行得更有

如何在NetBeans IDE中写出更好的Javadoc

作为一名在IDR解决方案上的开发者,我花了我很多时间来增加Javadoc中JPedal的Java PDF库,使之更易于使用. 我认为这可能是非常有用的,显示你的NetBeans IDE中如何简化这个过程.在这短短的教程中,我将解释如何自定义Javadoc,以及如何将它添加到任何一个类或整个项目. 自定义Javadoc 要自定义Javadoc的范围,只需选择NetBeans IDE的任务栏上的工具,然后选择选项中编辑器.在搜索中键入Javadoc. 添加Javadoc NetBeans让你添加Ja

如何在github中写出自己的readme文件

一.问题 最近想做一个论文阅读的github库,想到写一个readme文件,但怎么能写得和一些官方readme文件一样呢,在网上找了很多教程,世界上都是千篇一律,连改都不改,直接复制,真是太垃圾了. 二.解决 在找的过程中,一个人的回答真的是很不错,直接把写得好 的文件扒下来,理解一下,照着写就是了.例如问答中推荐的readme文件,把它copy下来,在typora中的源码模式中paste完了之后关闭源码模式,就可以显示.然后找到你想要的,直接比对着做就好了. 原文地址:https://www.

如何写出更好的Java代码

Java是最流行的编程语言之一,但似乎并没有人喜欢使用它.好吧,实际上Java是一门还不错的编程语言,由于最近Java 8发布了,我决定来编辑一个如何能更好地使用Java的列表,这里面包括一些库,实践技巧以及工具. 这篇文章在GitHub上也有.你可以随时在上面贡献或者添加你自己的Java使用技巧或者最佳实践. 编码风格 结构体 builder模式 依赖注入 避免null值 不可变 避免过多的工具类 格式 文档 Stream 部署 框架 Maven 依赖收敛 持续集成 Maven仓储 配置管理

理解CacheLine与写出更好的JAVA

今天查了很多资料,主要是想搞清楚写JAVA和CacheLine有什么关系以及我们如何针对CacheLine写出更好的JAVA程序. CPU和内存 CPU是计算机的大脑,它负责运算,内存是数据,它为CPU提供数据.这里之所以忽略其他存储设备是为了简化模型.假设我们面对的是具有两个核心的CPU,那么我们的模型大概如下面的样子: CPU计算核心不会直接和内存打交道,它会直接从缓存拿数据,如果缓存没拿到,专业点说即缓存未命中的时候才会去内存去拿,同时会更新缓存.这个过程CPU不会仅仅读取需要的某个字节或

[label][翻译][JavaScript-Translation]七个步骤让你写出更好的JavaScript代码

7 steps to better JavaScript 原文:http://www.creativebloq.com/netmag/7-steps-better-javascript-51411781七个步骤让你写出更好的JavaScript代码 随着浏览器的性能提升,新的HTML5 APIS也在不断地被应用,JavaScript在web使用中不断增长.然而,一行糟糕的代码就有可能会影响到整个网站,产生糟糕的用户体验和造成潜在客户的流失. 开发者必须使用他所能使用的工具和技巧来提高代码的质量,

Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码

美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码可以看出 Java 8 扩展支持到 2025 年,而 Java 11 扩展支持到 2026 年. 现在大部分都在用 Java 8,Java 9 和 10 目前很少有人在用,至少我没有发现有公司在生产环境应用的,那就是找死. 现在 Java 11 长期支持,也已

如何写出没有BUG的代码?

1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 Mark III 计算机进行研究工作.她的团队跟踪到 Mark II 上的一个错误,操作人员发现是由于一只飞蛾钻到了 Mark II 的继电器里导致的.团队清除了这只飞蛾,一切恢复正常.当时的工作人员记录了这样一句日志:" First actual case of bug being found. "  这次著名的事件,犹如潘多拉打开了魔盒,从此,程序员的世界里,bug 满天飞