”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > React:好代码和坏代码

React:好代码和坏代码

发布于2024-08-17
浏览:386

React: Good and Bad Code

:从mapStateToProps返回新数组或新对象。如果要返回一个对象,请确保它以后不会被更改。当该对象发生哪怕最轻微的变化时,这可能会导致整个组件和子树被重新渲染。 

Do:mapstateToProps 应该只返回直接来自状态的基元和数组(不要从 mapStateToProps 创建新数组,如果需要,创建一个选择器来缓存参数计算结果数组)。稍后将迭代的数组应包含要呈现的项目的字符串 id。列表项负责使用从 props 传递的 id 查找全局状态信息。

Do:构建您自己的自定义钩子时,请确保要返回的数组也被记住。不成熟的优化不被认可,但为什么不以最优化的方式构建一些东西,它不需要花费大量的精力,并且可以促进其他处理代码的工程师的学习。提升团队技能!

Do:构建大型对象时,按字母顺序对键进行排序。对象的大小可能会增加,并且搜索属性可能非常耗时。尤其是商店,请确保减速器按字母顺序排序。

不要:构建特定于您正在构建的页面/屏幕的减速器。想想它如何扩展到其他页面/屏幕。咨询团队以了解您正在构建的页面/屏幕未来可能的用途。

Do:确保使用定制的 API 封装与外部 api 的通信。将来如果需要更换服务,可以通过这个定制的 API 来完成。以 Bugsnag 为例。将那个男婴包装在定制的 API 上,以防万一您想使用 Sentry。

Do:同样的注释。请标准化后端和前端处理错误的方式。应用程序中的每个操作都应该包装在 try/catch 块上,并且 catch 块将报告发送到错误报告工具。您的应用程序还应该用错误边界包装整个应用程序。我相信有一种适当的方法可以建立正确的模式。一种能够捕获所有错误并报告有意义的信息的模式。

Do:使用 Sonar 等强制代码质量的工具,这将在代码审查期间节省大量时间,因为有人决定使用 if ... else 而不是 if ... return 。小细节会降低开发人员的创造力,而只是遵循声纳代码质量标准的要求。从第一天起,即使是遵循这些细节的代码库也很容易编码。

结论

这就是我目前的所有看法。有了一个强制模式的代码库,人们可以从代码库的其他地方获取一段代码,粘贴它,稍微改变一下措辞等等,你就拥有了一个以各种可能的方式满足生产标准的功能。虽然有一些观点,但至少在撰写本文时确实存在一种最高效的做事方式。可能会出现其他方法,但在编写代码时最高效的编写代码的方法是编写代码的唯一方法。说起来容易做起来难,直到你遇到最后期限的怪物。

版本声明 本文转载于:https://dev.to/carlosrambles/react-good-and-bad-code-43g?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • ## 您可以在不使用 JavaScript 的情况下使用 CSS 创建饼图分段吗?
    ## 您可以在不使用 JavaScript 的情况下使用 CSS 创建饼图分段吗?
    使用 CSS 在圆中分段使用 border-radius 在 CSS 中创建圆是一种常见的做法。但是,我们可以通过分段(类似于饼图)实现类似的效果吗?本文深入研究了仅通过 HTML 和 CSS 实现此目的的方法,不包括使用 JavaScript。生成相等大小的段相等大小段的一种方法涉及生成以下内容的...
    编程 发布于2024-11-06
  • 从头开始构建一个小型矢量存储
    从头开始构建一个小型矢量存储
    With the evolving landscape of generative AI, vector databases are playing crucial role in powering generative AI applications. There are so many vect...
    编程 发布于2024-11-06
  • 如何在Chrome中使用AI实验API
    如何在Chrome中使用AI实验API
    要在 Chrome 中使用实验性 AI API,请按照以下步骤操作: 硬件要求 4GB 内存 GPU可用 至少 22GB 空间 Windows 10.11 或 macOS Ventura 或更新版本(无 Linux 规范) 尚不支持: Chrome操作系统 Chrome iOS Ch...
    编程 发布于2024-11-06
  • 评论:Adam Johnson 的《Boost Your Django DX》
    评论:Adam Johnson 的《Boost Your Django DX》
    书评很微妙。您不想破坏它,但您也想让潜在读者体验一下所期待的内容。这是提供背景和保持兴趣之间的巧妙平衡。我试图在这篇评论中达到这种平衡,为您提供足够的内容来吸引您,而不透露太多。 一个小背景故事:我第一次从 Djangonaut Space 的好朋友 Tim 那里听说这本书,并将其添加到我的阅读列表...
    编程 发布于2024-11-06
  • 如何对数组元素进行分组并组合多维数组中另一列的值?
    如何对数组元素进行分组并组合多维数组中另一列的值?
    按列对数组元素进行分组并组合另一列中的值给定一个包含两列嵌套数组的数组,任务是将基于特定列的子数组,并将每个组中另一列的值连接起来,生成一个以逗号分隔的列表。考虑以下示例数组:$array = [ ["444", "0081"], ["...
    编程 发布于2024-11-06
  • 三个新添加的例外功能
    三个新添加的例外功能
    从 JDK 7 开始,异常处理已扩展为三个新功能:自动资源管理、多重捕获和更准确的重新抛出。 多重catch允许您使用同一个catch子句捕获多个异常,避免代码重复。 要使用多重捕获,请指定由 | 分隔的异常列表。在 catch 子句中。每个参数都是隐式最终参数。 用法示例:catch(final...
    编程 发布于2024-11-06
  • 如何修复运行 ES6 代码时出现“意外的令牌导出”错误?
    如何修复运行 ES6 代码时出现“意外的令牌导出”错误?
    “排除意外的令牌导出错误”尝试在项目中执行 ES6 代码时,可能会出现“意外的令牌导出”错误。此错误表明所使用的环境不支持 ES6 模块中使用的导出关键字语法。错误详细信息以下代码片段举例说明了错误的来源: export class MyClass { constructor() { c...
    编程 发布于2024-11-06
  • 即使卸载后,VSCode 扩展也不会从文件系统中删除,我创建了一个解决方案!
    即使卸载后,VSCode 扩展也不会从文件系统中删除,我创建了一个解决方案!
    所以这是基于 vscode 的编辑器的问题。即使您卸载了扩展程序,它也会保留在文件系统中,并随着时间的推移堵塞您的系统。我创建了一个简单的解决方案。运行此 python 脚本将删除 vscode 上未安装的扩展。 它适用于 VS Code、VS Code Insiders,也适用于 VSCodiu...
    编程 发布于2024-11-06
  • 通过 GitHub Actions 按计划更新网站内容
    通过 GitHub Actions 按计划更新网站内容
    我想分享我构建一个自我可持续的内容管理系统的旅程,该系统不需要传统意义上的内容数据库。 问题 该网站的内容(博客文章和书签)存储在 Notion 数据库中: 带书签的数据库 –  Notion UI 我试图解决的问题是不必在添加每个书签后手动部署网站。最重要的是 - 保持托管尽可能便...
    编程 发布于2024-11-06
  • 如何在 Laravel 5 应用程序的共享托管环境中清除缓存?
    如何在 Laravel 5 应用程序的共享托管环境中清除缓存?
    如何从 Laravel 5 中的共享托管服务器清除缓存清除缓存对于维护 Laravel 应用程序的性能和效率至关重要。但是,在您可能无法访问 CLI 的共享托管环境中,清除缓存可能是一个挑战。清除视图缓存的解决方法在这种情况下,您可以通过在 CLI 之外调用 Artisan 命令来解决此问题。要清除...
    编程 发布于2024-11-06
  • 如何加速 Matplotlib 绘图以提高性能?
    如何加速 Matplotlib 绘图以提高性能?
    为什么 Matplotlib 这么慢?在评估 Python 绘图库时,考虑性能很重要。 Matplotlib 是一个广泛使用的库,它看起来可能很缓慢,引发了关于加快速度或探索替代选项的问题。让我们深入研究这个问题并探索可能的解决方案。提供的示例展示了具有多个子图和数据更新的图。使用 Matplotl...
    编程 发布于2024-11-06
  • 使用画布调整图像大小时如何克服锯齿状边缘和模糊结果?
    使用画布调整图像大小时如何克服锯齿状边缘和模糊结果?
    解决在 JavaScript 中使用 Canvas 调整图像大小时的平滑问题在 JavaScript 中使用 Canvas 调整图像大小有时会导致明显的锯齿状边缘或模糊。为了实现平滑的调整大小,可以采用一种称为向下步进的技术。在大多数浏览器中,默认情况下使用线性插值来调整大小。双三次插值可产生更平滑...
    编程 发布于2024-11-06
  • 如何解决 MySQL C# 中的文本编码问题?
    如何解决 MySQL C# 中的文本编码问题?
    修复 MySQL C# 中的文本编码问题使用实体框架在 C# 中处理 MySQL 数据库时,用户可能会遇到文本编码问题,特别是带有特殊字符,例如“ë”,渲染不正确。本文探讨了解决此常见问题的最合适的解决方案。要纠正编码问题,必须执行以下操作:验证排序规则设置: 确保所涉及的数据库或表的排序规则与 U...
    编程 发布于2024-11-06
  • 如何将美丽搜索与 Node.js 集成
    如何将美丽搜索与 Node.js 集成
    作为 Node.js 开发人员,构建能够提供快速且准确的搜索结果的应用程序非常重要。用户期望立即得到相关的响应,但实现起来可能具有挑战性,特别是在处理大型数据集时。 这就是美丽搜索的用武之地——一个为轻松满足这些需求而构建的搜索引擎。 什么是美丽搜索? Meilisearch 是一个...
    编程 发布于2024-11-06
  • 并行 JavaScript 机
    并行 JavaScript 机
    作者:Vladas Saulis,PE Prodata,克莱佩达,立陶宛 2024 年 5 月 18 日 抽象的 本文提出了一种新的编程模型,可以以简单且自动平衡的方式利用多核 CPU 系统。该模型还提出了一种更简单的编程范例,用于在大多数大规模并行计算领域(例如天气预报、核物理、搜索引擎等)开发并...
    编程 发布于2024-11-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3