有点烦 React

React 从一个简单的客户端 UI 库演变为一个由 hooks、服务端组件以及 Next.js 之类框架主导的生态,这让许多开发者因复杂性上升和心智模型不透明而感到沮丧。评论者指出,`useEffect` 被过度使用、Create React App 被弃用,以及对基于 Node、偏服务端的方案的推动,都会让现代 Web 应用更慢、更难推理,也不那么有开发乐趣。虽然仍有人称赞 React 的生态和灵活性,但很多人正转向 Svelte、Solid、Vue、Preact,甚至纯 Web 标准,以获得更简单、更可预测的前端。

客户端 React vs 服务端组件 / Next.js

  • 许多人觉得 React “分成了两半”:经典的客户端 React 与新的服务端组件 / Next.js 世界。
  • 一些人怀念能够直接通过 CDN 发布一个简单的 React 应用,而不需要 Node 或完整框架。
  • 有些人认为 Server Components 和 SSR 有越界或功能膨胀之嫌;另一些人则把它们视为官方未来,尤其是通过 Next.js。
  • 有人怀疑服务端组件主要服务于主机商的利益(更多服务器算力、厂商锁定),而不是明确的应用层收益。

Hooks 和 useEffect 争论

  • Hooks 极具争议:有人称其为组件框架里最好的想法之一;也有人把它看作一种令人困惑的新范式,既不像 FP 也不像 OOP。
  • 关于 useEffect 的重复抱怨很多:在被过度使用,或用于数据获取和状态编排时,它会带来复杂性、竞态条件和“意大利面条式”代码。
  • 另一些人认为 useEffect 应该很少使用,主要用于外部系统 / DOM API,而数据则交给库来处理(React Query、SWR 等)。
  • 甚至连 React 自己教什么都存在分歧:文档一方面展示用 useEffect 做请求,另一方面又提醒你不要这么做。

复杂性、DX 和替代方案

  • 一些评论者说,现代 React 应用比旧技术栈(Backbone、简单的 jQuery、PHP、早期 Facebook)更难推理。
  • 也有人反驳说,复杂 UI 永远都会复杂,而 React 仍然是一个不错的中间方案。
  • 受赞赏的替代方案包括:Solid、Svelte、Vue、HTMX、Preact、Lit、原生 Web Components,有时再配合 Vite;很多人认为这些更接近“老 React”或更简单的心智模型。

状态管理与架构

  • 有批评称 React 促使人把业务逻辑、数据获取和视图放在巨大的组件里。
  • 有人主张通过 Redux/MobX 或外部“服务”严格分离,把组件当作纯粹的 state → UI
  • 也有人指出 Redux/MobX 同样可能被严重滥用;大型团队和时间压力往往会导致架构退化,而不管用什么框架。

工具链变化与沟通

  • Create React App 普遍被认为实际上已经弃用,但官方叙事里并没有清晰的替代方案。
  • Next.js 被视为事实上的官方推荐路径,这让那些不做基于 Node 应用的人很不爽。
  • Vite + 更轻量的库(Preact 等)经常被提作实用、现代的“非官方 CRA”。
  • 还有不少人批评 React 的信息传达前后不一或不够透明,进一步加剧了困惑和挫败感。