iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >新手React开发人员容易做错的事有哪些
  • 206
分享到

新手React开发人员容易做错的事有哪些

2024-04-02 19:04:59 206人浏览 独家记忆
摘要

这篇文章主要讲解了“新手React开发人员容易做错的事有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“新手React开发人员容易做错的事有哪些”吧!1.

这篇文章主要讲解了“新手React开发人员容易做错的事有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“新手React开发人员容易做错的事有哪些”吧!

1. 忘记大写React组件

考虑一下这段代码,它创建一个简单的div,其中包含父组件的标题。里面有一个子组件,其中包含带有一些文本的div。

class childComponent extends React.Component {   render() {     return (       <div className='childDiv'>         <p>Child Component</p>       </div>     );   } }  class ParentComponent extends React.Component {   render() {     return (       <div className='parentDiv'>         <h2 className='parentHeader'>Parent Component</h2>         <childComponent />       </div>     );   } }  export default ParentComponent;

您认为代码运行时会出现什么?

新手React开发人员容易做错的事有哪些

childComponent 未渲染。它去哪儿了?代码编译成功,终端也没有错误。

再次查看子组件的代码。注意组件的名称,你注意到什么不同了吗?

在浏览器中打开控制台,浏览器控制台警告的大小写不正确

新手React开发人员容易做错的事有哪些

事实证明,React将小写组件视为DOM标记。如果你是React的新手,你可能已经错过了React文档中的这个小细节。

如果不了解这一点,初学者常常会陷入这样的困惑:即他们的代码编译没有任何错误,到底哪里出了问题?

解决方法很简单,大写您的组件。

2. 错误地调用收到的props

要访问由父组件传入的prop,子组件必须确保它们调用了正确的prop名称。

还可以使用另一个变量名将Props传递给子组件。考虑以下代码片段:

class ChildComponent extends React.Component {   render() {     const { randomString } = this.props;      return (       <div className='childDiv'>         <p>{randomString}</p>       </div>     );   } }  class ParentComponent extends React.Component {   render() {     const randomString = 'lorem ipsum';          return (       <div className='parentDiv'>         <h2 className='parentHeader'>Parent Component</h2>         <ChildComponent mainText={randomString} />       </div>     );   } }

尽管此代码可以编译并运行无误,但 ChildComponent内不会渲染任何文本。

<ChildComponent mainText={randomString} />

仔细看看这一行代码,在 ParentComponent 中声明的变量 randomString 作为名为 mainText 的prop传递给  ChildComponent。

然而,ChildComponent 试图从它收到的prop中访问 randomString。由于它仅接收 mainText  作为prop,因此将导致未定义的值分配给在 ChildComponent 中声明的 randomString。结果,其

标记内未呈现任何内容。

注意哪些prop被传递到您的组件中,并相应地访问它们。这将在调试期间为您节省一些不必要的麻烦。

3. 传递不正确的Props类型

如果所接收的prop不是预期的类型,那么依赖于这些接收prop的组件可能会有不同的行为。

class ChildComponent extends React.Component {   render() {     const { showIntro, showBody } = this.props;      return (       <div className='childDiv'>         {showIntro && <p>Hello!</p>}         {showBody && <p>Spot the mistake!</p>}       </div>     );   } }

考虑这个有两个prop的 ChildComponent:showIntro 和 showBody。它显示“你好!和“发现错误!”只有当showIntro  和 showBody 分别设置为 true 时才会这样。

ChildComponent 希望将两个布尔值作为prop传递。如果在父组件中执行类似的操作,会发生什么情况?

<ChildComponent showIntro='false' showBody='false' /> <ChildComponent showIntro={'false'} showBody={'false'} /> <ChildComponent showIntro={false} showBody={false} />

在prop中使用了不同的引号和大括号。但是,它们的行为将不同。看看这个:

新手React开发人员容易做错的事有哪些

前两个 ChildComponent 都渲染了两个<p>标记,而最后一个 ChildComponent 没有渲染。

作为prop传递的 'false' 和 {'false'} 会导致无意中为 showIntro 和 showBody 分配了一个值为 false  的字符串,而不是布尔值 false。

对于前两个 ChildComponent,将 showIntro 和 showBody 都计算为 true。

这是由于 && 运算符的隐式强制类型转换。当 && 运算符检查 showIntro 或  showBody(均为字符串)时,两个字符串都将强制为 true。

最后一个 ChildComponent 接收到布尔值 false,因此它没有正确渲染任何内容。

console.log(`showIntro type: ${typeof showIntro}`); console.log(`showIntro evaluated to: ${showIntro && true}`); console.log(`showBody type: ${typeof showBody}`); console.log(`showBody evaluated to: ${showBody && true}`);

为了确认这一点,我们运行 console.log() 来检查每个 ChildComponent 中prop的运行结果。

新手React开发人员容易做错的事有哪些

正如这里所演示的,初学者在将prop传递给其他组件时能够区分使用引号和花括号之间的区别是非常重要的。

您可以使用引号来传递字符串文字。

<MyComponent data='Hello World!'/> // passing in a String

花括号用于传递javascript表达式。

<MyComponent data={2468} /> // passing in a Number <MyComponent data={true} /> // passing in a Boolean

以下是Reac文档中的一些注意事项:

将JavaScript表达式嵌入属性中时,请勿在大括号周围加上引号。您应该使用引号(用于字符串值)或大括号(用于表达式),但不要在同一属性中都使用引号。

4. 在render()内部调用setState()

下图无限循环错误消息

新手React开发人员容易做错的事有哪些

尽管您的组件中没有 componentWillUpdate() 或 componentWillUpdate(),您仍可能遇到此错误。当您在  render() 函数中调用 setState() 时也会发生此错误。

为什么会这样?每次调用 setState() 时,React将通过调用 render() 重新渲染。您的 render()  函数内部是什么?setState()。你看到结果了吗?一个无限循环。

只需将 setState() 调用移到 render() 函数之外即可。

如果在组件挂载后必须初始化状态(也许是从api端点提取数据),请在 componentDidMoun() 中进行。

如果可以在组件挂载之前初始化状态,也可以使用构造函数来完成。

5. setState()的异步性

在调试时,通常使用 console.log() 打印值。但是,当代码异步运行时,这不能很好地工作。

handleCounterIncrement = () => {   const { counter } = this.state;   console.log(`Before update: ${counter}`);   this.setState({ counter: counter + 1 });   console.log(`After update: ${counter}`); };

你以前试过这样做吗?坏消息&mdash;&mdash;setState() 调用是异步的。不能保证给定的代码将按顺序执行。它可能导致如下输出:

新手React开发人员容易做错的事有哪些

在执行 setState() 之前执行了两个 console.log() 调用。因此,它两次打印前一个状态的值。

如果希望在调用 setState() 之前和之后检查状态的值,请在 setState() 中将回调作为第二个参数传递。

handleCounterIncrement = () => {   const { counter } = this.state;   console.log(`before update: ${counter}`);   this.setState({ counter: counter + 1 }, () => {     console.log(`after update: ${this.state.counter}`);   }); };

回调将在 setState() 完成后执行,从而为 console.log() 提供同步行为。

新手React开发人员容易做错的事有哪些

感谢各位的阅读,以上就是“新手React开发人员容易做错的事有哪些”的内容了,经过本文的学习后,相信大家对新手React开发人员容易做错的事有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 新手React开发人员容易做错的事有哪些

本文链接: https://www.lsjlt.com/news/85086.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 新手React开发人员容易做错的事有哪些
    这篇文章主要讲解了“新手React开发人员容易做错的事有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“新手React开发人员容易做错的事有哪些”吧!1....
    99+
    2024-04-02
  • React研发人员的超强工具有哪些
    这篇文章主要讲解了“React研发人员的超强工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React研发人员的超强工具有哪些”吧!1. Webpa...
    99+
    2024-04-02
  • Python新手入门最容易犯的错误有哪些?
      Python以其简单易懂的语法格式与其它语言形成鲜明对比,初学者遇到最多的问题就是不按照Python 的规则来写,即便是有编程经验的程序员,也容易按照固有的思维和语法格式来写 Python 代码,这样就容易发生错误,以下列举了Pytho...
    99+
    2023-06-02
  • Java开发人员的常用类库有哪些
    这篇文章主要介绍“Java开发人员的常用类库有哪些”,在日常操作中,相信很多人在Java开发人员的常用类库有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java开发人员...
    99+
    2024-04-02
  • 开发人员最常用的Linux发行版有哪些
    本篇内容介绍了“开发人员最常用的Linux发行版有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. UbuntuUbuntu是一个基于...
    99+
    2023-06-15
  • web程序员最容易犯的技术错误有哪些
    本篇内容介绍了“web程序员最容易犯的技术错误有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 为...
    99+
    2024-04-02
  • 前端开发人员的救生工具有哪些
    今天就跟大家聊聊有关前端开发人员的救生工具有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。CSS代码生成器你是否曾...
    99+
    2024-04-02
  • 最容易犯的Python开发错误分别是哪些
    这篇文章给大家介绍最容易犯的Python开发错误分别是哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库。与其它大多数程序设计语言使用大括号...
    99+
    2023-06-17
  • web开发中容易忽略的CSS特性有哪些
    web开发中容易忽略的CSS特性有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。大小写不敏感 虽然我们平时在写CSS的时候...
    99+
    2024-04-02
  • 适用于Linux管理员和开发人员的git命令有哪些
    这篇文章主要为大家展示了“适用于Linux管理员和开发人员的git命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“适用于Linux管理员和开发人员的git命令有哪些”这篇文章吧。Git是...
    99+
    2023-06-16
  • 开发人员和管理员应该掌握的Nginx命令有哪些
    这篇文章将为大家详细讲解有关开发人员和管理员应该掌握的Nginx命令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。17. 找到NginxPIDPID或进程ID是唯一的数字,用于区分Linux和类Un...
    99+
    2023-06-16
  • 开发人员所需要知道的HTML5性能有哪些
    开发人员所需要知道的HTML5性能有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 从性能角度来说,HTML5首先是缩减了H...
    99+
    2024-04-02
  • Web开发人员需要掌握的知识点有哪些
    这篇文章将为大家详细讲解有关Web开发人员需要掌握的知识点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 正则表达式正则表达式 常用于字符串的解析.其最基础的运...
    99+
    2024-04-02
  • Web开发者易犯的严重错误有哪些
    小编给大家分享一下Web开发者易犯的严重错误有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.  “重新发明轮子...
    99+
    2024-04-02
  • 提升Web开发人员效率的工具网站有哪些
    本篇内容介绍了“提升Web开发人员效率的工具网站有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.C...
    99+
    2024-04-02
  • Web开发人员进行UI/UX设计的方法有哪些
    本篇内容主要讲解“Web开发人员进行UI/UX设计的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Web开发人员进行UI/UX设计的方法有哪些”吧!Google Analytics(分...
    99+
    2023-06-27
  • 开发人员最常用的HTML5代码生成器有哪些
    这篇文章主要介绍“开发人员最常用的HTML5代码生成器有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“开发人员最常用的HTML5代码生成器有哪些”文章能帮助大家...
    99+
    2024-04-02
  • 适用于PHP开发人员的Python基础知识有哪些
    今天就跟大家聊聊有关适用于PHP开发人员的Python基础知识有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。作为一种面向对象、直译式计算机程序设计语言,Python已经具有十多...
    99+
    2023-06-17
  • Java开发人员应该学习的基本框架有哪些
    Java开发人员应该学习的基本框架有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Spring,Hibern...
    99+
    2024-04-02
  • PHP 开发人员必须掌握的索引技术有哪些?
    随着 Web 应用程序的不断发展,数据库也变得越来越重要。在处理大量数据时,数据索引技术可以大大提高数据库的性能和响应速度。在 PHP 开发中,掌握索引技术是非常重要的,这可以帮助 PHP 开发人员更高效地处理数据。本文将介绍 PHP 开...
    99+
    2023-08-19
    面试 索引 开发技术
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作