首页 > 其他分享 >React 整洁代码的 10 个最佳实践(译)

React 整洁代码的 10 个最佳实践(译)

时间:2023-12-02 21:33:05浏览次数:27  
标签:10 return 代码 React MyComponent 组件 整洁

作者:大家的林语冰
链接:https://www.zhihu.com/question/36516604/answer/3279585231
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

React 整洁代码的 10 个最佳实践(译)免责声明 本文属于是语冰的直男翻译了属于是,仅供粉丝参考,英文原味版请临幸 Top 10 React.js Best Practices for Clean Code。整洁的代码对于任何软件项目的可维护性和可扩展性都至关重要,React.js 也不例外。React 组件筑基的架构为整洁且可重用的代码打 call,但如果您不遵循最佳实践,那很容易引入复杂性和混乱。在此博客中,我们将探讨 React.js 的 10 个最佳实践,帮助您维护整洁且有组织的代码。我们将为每个实践提供详细的解释和代码示例。1. 使用函数式组件函数式组件是编写 React 组件的首选方式。祂们比类组件更简洁、更容易阅读。这是一个例子:function MyComponent(props) {
return <div>{props.text}</div>
}2. 解构 Props解构组件参数级别的 props 可以使您的代码更整洁且更具可读性。function MyComponent({ text }) {
return <div>{text}</div>
}3. 诉诸 Hook 管理状态使用 useState 和 useEffect 等 React Hook 进行状态管理和副作用。Hook 使您的代码更简洁且更易推理。import React, { useState, useEffect } from 'react'

function MyComponent() {
const [count, setCount] = useState(0)

useEffect(() => {
document.title = `Count: ${count}`
}, [count])

return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
)
}4. 组件的关注点分离遵循单一职责原则。将您的 App 划分为更小的、可重用的组件,专注于一项特定任务。5. 使用 Prop Types 或 TypeScript使用 Prop Types 或 TS(TypeScript)定义组件 props 的预期数据类型。这有助于及早捕获错误并记录组件的接口。import PropTypes from 'prop-types'

function MyComponent(props) {
// ...
}

MyComponent.propTypes = {
text: PropTypes.string.isRequired
}
6. 避免在 JSX 中进行条件渲染代替 JSX 中复杂的三元运算符,根据 return 语句外部的变量或状态按需渲染组件。function MyComponent({ isLoading, data }) {
if (isLoading) {
return <LoadingSpinner />
}

return <DataComponent data={data} />
}7. 使用 CSS 模块或样式组件要保持简洁和模块化的样式,请使用 CSS 模块或样式组件来封装组件专属样式。8. 避免内联样式避免在 JSX 中使用内联样式,因为祂们会使代码更难维护。相反,请使用 CSS 或样式解决方案(比如样式组件)。9. 使用 PureComponent 或 React.memo 优化渲染为了优化性能,请对类组件使用 PureComponent,对函数式组件使用 React.memo,防止多余的重新渲染。import React, { PureComponent } from 'react'

class MyComponent extends PureComponent {
// ...
}
10. 关注组件层次结构请注意您的组件层次结构。深度嵌套的组件会使代码更难理解。考虑使用上下文或状态管理库来避免过度的 prop 穿透。总而言之,遵循这些最佳实践将帮助您维护整洁、可读且可维护的 React.js 代码。整洁的代码不仅使您的开发过程更加丝滑,而且还确保您的 App 更加鲁棒且更易于与其他开发者协作。愉快撸码!您现在收看的是直男翻译系列,学废了的小伙伴可以点赞友情赞助本系列,我们每天佛系投稿,欢迎关注和订阅最新动态。谢谢大家的彼芯,掰掰~<img src="https://pic1.zhimg.com/50/v2-8ce67861a0285b1de0c6b4c50cb0042c_720w.gif?source=2c26e567" data-caption="" data-size="normal" data-rawwidth="500" data-rawheight="380" data-original-token="v2-8ce67861a0285b1de0c6b4c50cb0042c" data-thumbnail="https://picx.zhimg.com/50/v2-8ce67861a0285b1de0c6b4c50cb0042c_720w.jpg?source=2c26e567" data-default-watermark-src="https://picx.zhimg.com/50/v2-8ce67861a0285b1de0c6b4c50cb0042c_720w.jpg?source=2c26e567" class="origin_image zh-lightbox-thumb" width="500" data-original="https://picx.zhimg.com/v2-8ce67861a0285b1de0c6b4c50cb0042c_r.jpg?source=2c26e567"/>编辑于 2023-11-19 02:22・IP 属地广东真诚赞赏,手留余香

标签:10,return,代码,React,MyComponent,组件,整洁
From: https://www.cnblogs.com/sexintercourse/p/17872261.html

相关文章

  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站利用腾讯云创建的个人博客,里面含有个人简历网址:http://43.139.159.226/博客主......
  • js:React中使用classnames实现按照条件将类名连接起来
    参考文档https://www.npmjs.com/package/classnameshttps://github.com/JedWatson/classnames安装npminstallclassnames示例importclassNamesfrom"classnames";//字符串合并console.log(classNames("foo","bar"));//foobar//对象合并c......
  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站个人简历:https://bluestarc.github.io/silver-waffle/......
  • 苹果iPhone因没有存储空间而死机和不断重启,重启白苹果黑底,恢复模式更新系统报错1110,解
    参考自:https://www.bilibili.com/video/BV1Mr4y1X7cT/?spm_id_from=333.337.search-card.all.click&vd_source=869b36c3961d4a89a184a469bc7589bb手机苹果iPhone,存储满,提示重启后白苹果,无法进入系统。操作方法:1、mac雷电接手机后,进入DFU,短按一下音量加键并松开,立刻再短按音量减......
  • 2023-2024-1 20232310 《网络空间安全导论》第4周学习
    教材内容学习总结教材学习中的问题和解决过程问题1:不理解sql注入的原理解决方案:利用B站学习sqlmap的使用方法,了解深层逻辑问题2:对于入侵检测的具体概念理解解决方案:询问Chatgpt,查询有关具体例子。基于AI的学习感悟系统安全是一项很复杂的工程,需要我不断努力学习......
  • day10 动态Jenkins-Slave解决方案-发布流程设计 (4.1.1-4.2)
    一、动态Jenkins-Slave解决方案上1、基于Jenkins的Master-Slave模式实现CI-CD1.1痛点梳理构建任务高峰期,Jenkins服务频发不可用状态服务虚拟机资源有限,不能随意调用空闲资源Jenkins服务器宕机后需要人工手动重启1.2思路分析基于K8S动态Slave模式优势基于云原生现......
  • Apple Final Cut Pro 10.7 - 专业后期制作 (视频编辑)
    AppleFinalCutPro10.7-专业后期制作(视频编辑)FinalCutPro10.7+Compressor4.7+Motion5.7(Universal)请访问原文链接:https://sysin.org/blog/apple-final-cut-pro/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgFinalCutPro强大新功能将Mac与......
  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站https://xiiiny.github.io/......
  • 《计算机基础与程序设计》第10周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第10周学习总结作业信息课程<班级的链接>(2023-2024-1-计算机基础与程序设计)要求<作业要求的链接>(2023-2024-1计算机基础与程序设计第10周作业目标<了解文件系统和目录以及字符串的使用>作业正文https:......
  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站使用了github加hexo构建了一个在线网站链接:https://fusonghua666.github.io/......