当前位置: 首页 > 科技观察

如何在React中写出更好的代码

时间:2023-03-19 13:11:32 科技观察

TipsforwritingbettercodeinReact,关于Linting、propTypes、PureComponent等几个要点,帮助你写出更好的代码。LiteralReact使创建交互式UI变得毫不费力。为应用程序中的每个状态设计简单的视图,React将在数据更改时高效地更新和呈现正确的组件。在这篇文章中,我将向您展示一些技巧,帮助您成为更好的React开发人员。我将涵盖从工具到实际代码风格的一系列内容,这可以帮助您提高React技能💪主要有以下几个方面:代码提示。使用propTypes和defaultProps。知道何时创建新组件。知道何时编写组件、纯组件和无状态功能组件。使用React开发工具。在代码中使用内联条件语句。使用Snippet,一个代码片段库。了解React的工作原理。代码提示对于编写更好的代码来说真正重要的一件事是好的提示。因为如果我们有一套好的Linting规则,您的代码编辑器将能够捕获任何可能导致代码出现问题的内容。但不仅仅是捕捉问题,你的ESLint设置会不断地教你React最佳实践。importreactfrom'react';/*Otherimports*//*Code*/exportdefaultclassAppextendsReact.Component{render(){const{userIsLoaded,user}=this.props;if(!userIsLoaded)return;return(/*代码*/)}}以上面的代码片段为例。假设您想在render()函数中引用一个名为this.props.hello的新属性。你的linter会立即变红并说:道具验证中缺少“你好”(反应/道具类型)Linting将帮助你了解React中的最佳实践并塑造你对代码的理解。很快,您将开始在编写代码时避免错误。你可以去ESLint,它为JavaScript设置了注释工具,或者你可以使用Airbnb的JavaScript风格指南。您还可以安装ReactESLint包。基本上这些代码提示将帮助您纠正在编写代码时遇到的问题。propTypes和defaultProps在前面的章节中,我谈到了当我尝试传递一个未经验证的prop时我的linter的行为:)}.isRequired,}在这里,如果我们说userIsLoaded不是必需的,那么我们需要在代码中添加:staticdefaultProps={userIsLoaded:false,}所以,每当我们的组件使用APropType时,我们都需要设置它的propType。例如,我们需要告诉ReactuserIsLoaded始终是一个布尔值。确保在每个使用props的组件上设置propTypes和defaultProps会有很大帮助。当这些道具没有得到他们期望的数据时,你的错误日志会让你知道你要么传递了错误的东西,要么期望的东西不存在,这使得查找错误变得容易得多,尤其是当你编写大量可重用的组件。它还使它们更加自我记录。注意:与早期版本的React不同,proptypes不再包含在React中,您必须将它们作为依赖项单独添加到您的项目中。单击此处了解更多信息:https://www.npmjs.com/package/prop-types了解何时创建新组件字符串,}).isRequired,}staticdefaultProps={userIsLoaded:false,}render(){const{userIsLoaded,user}=this.props;if(!userIsLoaded)return;return(

{isRole('affiliate',user={user._id}&&}
)}}这里我有一个名为Profile的组件。在这个组件中还有其他组件,如MyOrder和MyDownloads。现在我可以在这里编写所有这些组件,因为我只是从同一个地方(用户)提取数据并将所有这些小组件变成一个巨大的组件。虽然对于何时将代码移动到组件中没有任何硬性规定,但存在一些问题:代码的功能是否变得笨拙?它是否代表了它自己的东西?您打算重用您的代码吗??如果以上任何一个问题的答案是肯定的,那么您需要将您的代码移动到一个组件中。请记住,没有人希望在您的代码中看到一个200-300行的巨大组件,里面塞满了东西。..ComponentsVSPureComponentsVSStatelessFunctionalComponents对于React开发人员来说,知道何时在代码中使用Component、PureComponent和无状态功能组件非常重要。您可能已经注意到,在上面的代码片段中,我没有将配置文件声明为组件,而是将其称为PureComponent。首先,让我们看一下无状态功能组件。无状态功能组件constBillboard=()=>(ReactReact

LoremIpsum

);无状态功能组件是库中最常见的组件类型之一。它们为我们提供了一种漂亮、干净的方式来创建不使用任何类型的状态或生命周期方法的组件。无状态函数组件的思想是它是无状态的,只是一个函数。这样做的好处是您将组件定义为返回一些数据的常量函数。简单来说,无状态函数式组件就是返回JSX的函数。纯组件通常,当一个组件获得一个新的prop时,React会重新渲染该组件。但有时,一个组件获得了新的props并没有真正改变,但React仍然会触发重新渲染。使用PureComponent将帮助您防止这种浪费的重新渲染。例如,如果一个prop是一个字符串或布尔值并且它发生了变化,PureComponent将识别它,但是如果一个对象中的属性发生变化,PureComponent将不会触发重新渲染。那么,您如何知道React何时触发了不必要的重新渲染?你可以查看这个名为WhyDidYouUpdate的令人惊叹的React包。当发生可能不必要的重新渲染时,此包将在控制台中通知您。一旦识别出不必要的重新渲染,就可以使用PureComponent而不是Component来防止不必要的重新渲染。WhyDidYouUpdate点击这里:https://github.com/maicki/why-did-you-update使用ReactDevTools如果你真的想成为一名专业的React开发者,那么使用ReactDevelopmentTools应该是你的开发常态正在进行中。ReactDevTools使您可以访问React应用程序的整个结构,让您看到应用程序中使用的所有属性和状态。ReactDevTools是探索我们的React组件并帮助诊断应用程序任何问题的好方法。使用内联条件的想法可能会引起一些人的注意,但我发现使用内联条件极大地清理了我的React代码。看看这个代码片段:{isRole('affiliate',user._id)&&}这里我有一个基本的函数被调用来检查一个人是否是“附属”,然后调用一个名为的组件。这样做的好处是:我不需要单独写一个函数。我不需要在渲染函数中再写一个“if”语句。我不需要在组件中创建到其他地方的“链接”。编写内联条件语句非常简单。您首先要编写条件语句。您可以说“true”,并且****组件将始终显示。接下来,我们使用&&将此条件语句与****连接起来。这样,组件只会在条件语句返回“true”时显示。使用片段库打开代码编辑器(我使用VSCode),并创建一个.js文件。在这个文件中,当您键入rc时,您会看到类似这样的内容。按回车键,您将立即获得以下代码:这些代码片段的好处在于它们不仅可以帮助您潜在地避免错误,还可以帮助您识别最新的语法。您可以在代码编辑器中安装许多不同的片段库。我在VSCode中使用ES7React/Redux/React-Native/JSSnippets。了解React的工作原理ReactInternals是一个由五部分组成的系列,它帮助我了解了React的基础知识,并最终帮助我成为一名更好的React开发人员!这是一个很好的例子。如果你遇到一些你可能不完全理解的事情,或者你了解React的工作原理,ReactInternals将帮助你了解何时以及如何在React中正确地做事。这对于那些有想法但不太清楚在哪里执行代码的人特别有用。了解React工作原理的基础知识将帮助您成为更好的React开发人员。