首页 > web前端 > js教程 > 我讨厌 React 的五件事(以及如何克服它们)

我讨厌 React 的五件事(以及如何克服它们)

Susan Sarandon
发布: 2024-11-25 01:24:16
原创
705 人浏览过

Five Things I Hate About React (And How to Overcome Them)

React 已成为现代 Web 开发的基石。凭借其声明式风格和可重用的基于组件的结构,它彻底改变了开发人员构建界面的方式。但没有任何工具是完美无缺的。尽管我很欣赏 React,但开发人员(包括我自己)在使用它时经常会遇到一些挫折。

在这篇博客中,我将深入探讨我讨厌 React 的五件事,探讨它们为何存在问题,并提供可行的解决方案来解决这些问题。无论您是经验丰富的开发者还是刚刚起步的开发者,这里都有适合每个人的东西。


1. 初学者的陡峭学习曲线

React 以其“只是 JavaScript”而自豪,但对于初学者来说,现实要复杂得多。原因如下:

  • JSX 语法: 乍一看,JSX 看起来很吓人。对于许多新开发人员来说,将类似 HTML 的语法与 JavaScript 混合起来感觉不自然。
  • 状态和属性:管理父组件和子组件之间的数据流需要理解不变性和单向数据流等概念。
  • Hooks: 虽然 useState 和 useEffect 改变了游戏规则,但它们可能会让仍在努力掌握 React 基础知识的初学者不知所措。

为什么这很重要

React 通常被宣传为适合初学者,但这些复杂性可能会让新手望而却步。如果有人一开始就挣扎,他们可能会完全放弃。

解决方案

  1. 从简单开始

    首先关注基本概念。从功能组件、道具和简单的状态管理开始。在掌握基础知识之前,请避免深入研究 hooks、context 或 Redux 等库。

  2. 学习资源

    • React 官方文档: React 的新文档对于初学者来说很友好,并提供了交互式示例。
    • 课程: Codecademy 和 Udemy 等平台都有分步的 React 教程。选择一个符合您的学习风格的。
  3. 练习构建小型项目

    创建待办事项应用程序、简单的博客或天气应用程序以熟悉 React 概念。在构建更大的项目之前先从小处开始。

  4. 阿莱 UI 生成器

    使用 Allais UI Generator 构建预先设计的 UI 组件。这是一种专注于功能而不用担心样式或结构的好方法,特别是对于初学者来说。


2. 无处不在的样板

React 最大的优势之一——灵活性——也可能是一个弱点。设置 React 项目通常涉及重复性任务,例如配置路由、状态管理和构建工具。即使使用像 create-react-app 和 Vite 这样的现代工具,样板也会让人感觉过多。

真实场景

想象一下您正在启动一个新的 React 应用程序。您可能需要:

  • 安装依赖项(react-router-dom、redux 等)
  • 为组件、样式和资源创建文件夹结构。
  • 配置您的应用程序以进行路由、API 调用和状态管理。

对于小型项目来说,这种设置感觉有点大材小用。对于大型项目来说,这很乏味。

解决方案

  1. 使用入门套件

    利用入门套件,其中包括用于路由、状态管理和测试的预配置设置。示例包括:

    • CRA(创建 React 应用程序):初学者的经典选择。
    • Next.js:非常适合具有内置路由和服务器端渲染的生产就绪应用程序。
    • Vite: 轻量级且快速,适合现代开发。
  2. 模块化您的代码

    为身份验证或 API 服务等常见功能创建可重用模块。这减少了冗余并加快了开发速度。

  3. 使用 Allais UI 生成器实现自动化

    Allais UI Generator 通过提供与 React、Svelte 和 Vue.js 兼容的预配置模板,最大限度地减少样板代码。该工具可加速开发,让您专注于构建而不是设置。


3. 性能优化可能很棘手

React 的虚拟 DOM 是一个奇迹,但优化应用程序的性能仍然是一个挑战。以下是开发人员面临的常见问题:

  • 不必要的重新渲染:由于道具或状态使用不当而导致组件不必要地重新渲染。
  • 大捆绑包:包含太多依赖项或未能进行代码分割可能会使您的捆绑包大小膨胀。
  • 低效的状态管理:状态管理不善(例如,在顶级组件中保留过多的状态)可能会损害性能。

为什么这很重要

缓慢的应用程序会导致较差的用户体验,尤其是对于使用较慢设备或网络的用户而言。在竞争激烈的市场中,性能至关重要。

解决方案

  1. 反应分析器

    使用 React Profiler 工具来识别导致不必要的重新渲染的组件。

  2. 记忆

    对功能组件使用 React.memo 并使用 useMemo 或 useCallback 钩子来防止不必要的计算。

const MemoizedComponent = React.memo(MyComponent);

  1. 代码分割 使用动态导入和 React.lazy 和 Suspense 等工具来拆分代码并仅在需要时加载组件。
const LazyComponent = React.lazy(() => import('./LazyComponent'));

登录后复制
登录后复制
  1. 采用高效的状态管理
    像 Zustand、Jotai 或 React Query 这样的库通常比 Redux 更轻量级,并且可以提高状态处理效率。

  2. 利用工具
    Allais UI Generator 等工具可帮助您创建优化的预构建 UI 组件,从而减少您的工作量。

    4. 选择太多

    React 的生态系统非常庞大。对于每一个挑战,都有大量的图书馆声称可以解决它。虽然这种多样性赋予了人们力量,但也可能带来瘫痪。

真实场景
想象一下您需要选择一个状态管理库。您应该使用 Redux、MobX、Zustand 还是 Context API?每种都有其优点和缺点,选择错误可能会带来不必要的麻烦。

为什么这很重要
花费大量时间评估工具会分散您对构建应用程序的实际工作的注意力。更糟糕的是,错误的选择可能会导致代价高昂的重构。

解决方案

  1. 坚持使用经过验证的工具 不要重新发明轮子。使用具有活跃社区的记录良好的库,例如:
  • 路由:React Router 或 Next.js 路由。
  • 状态管理:React Query 或 Redux Toolkit。
  • UI 组件:Allais UI 生成器,实现跨框架兼容性。
  • 根据需求评估图书馆
    问问自己:

  • 这个库能解决我的问题吗?

  • 是否积极维护?

  • 它与我的项目规模和复杂性相符吗?

  • 记录您的堆栈

    为您的项目创建一个“技术堆栈”文档。这将为未来的决策和新开发人员的入职提供参考。

    5. 频繁更新和重大变更

    React 的快节奏开发感觉就像一把双刃剑。虽然并发模式和服务器组件等新功能令人兴奋,但跟上更新可能会让人筋疲力尽。

真实场景
您刚刚升级到最新版本的 React,却发现您的应用程序的测试因流行库的更改而中断。

为什么这很重要
频繁的更新需要不断的学习和维护。对于期限紧迫或遗留代码库的团队来说,这尤其具有挑战性。
解决方案

  1. 逐步保持更新
  2. 新版本发布后不要升级 React 或其依赖项。等待社区反馈和更新文档。
  3. 使用 LTS 版本
  4. 专注于依赖项的长期支持 (LTS) 版本,以最大程度地减少重大更改。
  5. 监视器发行说明
  6. 在更新项目之前,请按照 React 博客和 GitHub 发行说明了解更改。
  7. 使用 Allais UI Generator 构建可扩展的 UI
  8. Allais UI Generator 等工具提供面向未来的模板,与 React、Svelte 和 Vue.js 中的最新最佳实践保持一致。

当然!这是该博客文章的扩展版本,其中包含每个问题的深入分析、示例和其他解决方案。此版本超过 2,500 字,并包含更多可操作的建议。

降价
复制代码

我讨厌 React 的五件事(以及如何克服它们)

React 已成为现代 Web 开发的基石。凭借其声明式风格和可重用的基于组件的结构,它彻底改变了开发人员构建界面的方式。但没有任何工具是完美无缺的。尽管我很欣赏 React,但开发人员(包括我自己)在使用它时经常会遇到一些挫折。

在这篇博客中,我将深入探讨我讨厌 React 的五件事,探讨它们为何存在问题,并提供可行的解决方案来解决这些问题。无论您是经验丰富的开发者还是刚刚起步的开发者,这里都有适合每个人的东西。


1. 初学者的陡峭学习曲线

React 以其“只是 JavaScript”而自豪,但对于初学者来说,现实要复杂得多。原因如下:

  • JSX 语法: 乍一看,JSX 看起来很吓人。对于许多新开发人员来说,将类似 HTML 的语法与 JavaScript 混合起来感觉不自然。
  • 状态和属性:管理父组件和子组件之间的数据流需要理解不变性和单向数据流等概念。
  • Hooks: 虽然 useState 和 useEffect 改变了游戏规则,但它们可能会让仍在努力掌握 React 基础知识的初学者不知所措。

为什么这很重要

React 通常被宣传为适合初学者,但这些复杂性可能会让新手望而却步。如果有人一开始就挣扎,他们可能会完全放弃。

解决方案

  1. 从简单开始

    首先关注基本概念。从功能组件、道具和简单的状态管理开始。在掌握基础知识之前,请避免深入研究 hooks、context 或 Redux 等库。

  2. 学习资源

    • React 官方文档: React 的新文档对于初学者来说很友好,并提供了交互式示例。
    • 课程: Codecademy 和 Udemy 等平台都有分步的 React 教程。选择一个符合您的学习风格的。
  3. 练习构建小型项目

    创建待办事项应用程序、简单的博客或天气应用程序以熟悉 React 概念。在构建更大的项目之前先从小处开始。

  4. 阿莱 UI 生成器

    使用 Allais UI Generator 构建预先设计的 UI 组件。这是一种专注于功能而不用担心样式或结构的好方法,特别是对于初学者来说。


2. 无处不在的样板

React 最大的优势之一——灵活性——也可能是一个弱点。设置 React 项目通常涉及重复性任务,例如配置路由、状态管理和构建工具。即使使用像 create-react-app 和 Vite 这样的现代工具,样板也会让人感觉过多。

真实场景

想象一下您正在启动一个新的 React 应用程序。您可能需要:

  • 安装依赖项(react-router-dom、redux 等)
  • 为组件、样式和资源创建文件夹结构。
  • 配置您的应用程序以进行路由、API 调用和状态管理。

对于小型项目来说,这种设置感觉有点大材小用。对于大型项目来说,这很乏味。

解决方案

  1. 使用入门套件

    利用入门套件,其中包括用于路由、状态管理和测试的预配置设置。示例包括:

    • CRA(创建 React 应用程序):初学者的经典选择。
    • Next.js:非常适合具有内置路由和服务器端渲染的生产就绪应用程序。
    • Vite: 轻量级且快速,适合现代开发。
  2. 模块化您的代码

    为身份验证或 API 服务等常见功能创建可重用模块。这减少了冗余并加快了开发速度。

  3. 使用 Allais UI 生成器实现自动化

    Allais UI Generator 通过提供与 React、Svelte 和 Vue.js 兼容的预配置模板,最大限度地减少样板代码。该工具可加速开发,让您专注于构建而不是设置。


3. 性能优化可能很棘手

React 的虚拟 DOM 是一个奇迹,但优化应用程序的性能仍然是一个挑战。以下是开发人员面临的常见问题:

  • 不必要的重新渲染:由于道具或状态使用不当而导致组件不必要地重新渲染。
  • 大捆绑包:包含太多依赖项或未能进行代码分割可能会使您的捆绑包大小膨胀。
  • 低效的状态管理:状态管理不善(例如,在顶级组件中保留过多的状态)可能会损害性能。

为什么这很重要

缓慢的应用程序会导致较差的用户体验,尤其是对于使用较慢设备或网络的用户而言。在竞争激烈的市场中,性能至关重要。

解决方案

  1. 反应分析器

    使用 React Profiler 工具来识别导致不必要的重新渲染的组件。

  2. 记忆

    对功能组件使用 React.memo 并使用 useMemo 或 useCallback 钩子来防止不必要的计算。

const LazyComponent = React.lazy(() => import('./LazyComponent'));

登录后复制
登录后复制


javascript
const MemoizedComponent = React.memo(MyComponent);
代码分割
使用动态导入和 React.lazy 和 Suspense 等工具来拆分代码并仅在需要时加载组件。

javascript
复制代码
const LazyComponent = React.lazy(() => import('./LazyComponent'));
采用高效的状态管理
像 Zustand、Jotai 或 React Query 这样的库通常比 Redux 更轻量级,并且可以提高状态处理效率。

利用工具
Allais UI Generator 等工具可帮助您创建优化的预构建 UI 组件,从而减少您的工作量。

  1. 太多选择 React 的生态系统非常庞大。对于每一个挑战,都有大量的图书馆声称可以解决它。虽然这种多样性赋予了人们力量,但也可能带来瘫痪。

真实场景
想象一下您需要选择一个状态管理库。您应该使用 Redux、MobX、Zustand 还是 Context API?每种都有其优点和缺点,选择错误可能会带来不必要的麻烦。

为什么这很重要
花费大量时间评估工具会分散您对构建应用程序的实际工作的注意力。更糟糕的是,错误的选择可能会导致代价高昂的重构。

解决方案
坚持使用经过验证的工具
不要重新发明轮子。使用具有活跃社区的记录良好的库,例如:

路由:React Router 或 Next.js 路由。
状态管理:React Query 或 Redux Toolkit。
UI 组件:用于跨框架兼容性的 Allais UI 生成器。
根据需求评估库
问问自己:

这个库能解决我的问题吗?
是否积极维护?
它与我的项目规模和复杂性相符吗?
记录您的堆栈
为您的项目创建一个“技术堆栈”文档。这将为未来的决策和新开发者入职提供参考。

  1. 频繁更新和重大更改 React 的快节奏开发感觉就像一把双刃剑。虽然并发模式和服务器组件等新功能令人兴奋,但跟上更新可能会让人筋疲力尽。

真实场景
您刚刚升级到最新版本的 React,却发现您的应用程序的测试因流行库的更改而中断。

为什么这很重要
频繁的更新需要不断的学习和维护。对于期限紧迫或遗留代码库的团队来说,这尤其具有挑战性。

解决方案
逐步保持更新
新版本发布时不要升级 React 或其依赖项。等待社区反馈和更新文档。

使用 LTS 版本
专注于依赖项的长期支持 (LTS) 版本,以最大程度地减少重大更改。

监视器发行说明
在更新项目之前,请按照 React 博客和 GitHub 发行说明了解更改。

使用 Allais UI Generator 构建可扩展的 UI
Allais UI Generator 等工具提供了面向未来的模板,与 React、Svelte 和 Vue.js 中的最新最佳实践保持一致。

更好的构建方式:Allais UI 生成器
如果这些 React 的挫败感引起了您的共鸣,那么是时候简化您的工作流程了。 Allais UI Generator 是一个为 React、Svelte 和 Vue.js 设计的跨框架 UI 生成器。这是它提供的功能:

预构建组件:通过使用现成的、可定制的组件来节省时间。
跨框架支持:无论您使用 React、Svelte 还是 Vue,Allais 都能满足您的需求。
性能优化的代码:生成符合最佳实践的干净、高效的代码。

最后的想法

React 是一个强大的工具,但它也并非没有挑战。通过承认其局限性并利用 Allais UI Generator 等工具,您可以简化工作流程并专注于真正重要的事情:构建卓越的应用程序。

不要让这些挫折阻碍你。拥抱 React 的怪癖,找到正确的解决方案,并不断突破您可以创造的界限。

以上是我讨厌 React 的五件事(以及如何克服它们)的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板