译:有点被 React 惹恼了

原文:https://blog.cassidoo.co/post/annoyed-at-react/
作者:Cassidy
译者:ChatGPT 4 Turbo

编者注:比较少转感受类的文章,但感觉这篇应该能代表现在不少社区同学的心声。现在有两个 React,一个在 Server,一个在 Client;同时现在也有两个 React,一个在 Meta,一个在 Vercel。

我最近对 React 的现状有点恼火。我仍然经常使用它,而且和那些仍在维护它的人相处得还算友好,它也是我首选的库,但是……它变得太让人困惑和沮丧了。

不是在吹牛,但我真的很懂 React。我用了将近十年的时间。我见证了它的变化和成长,使用了为了配合它而涌现出来的框架,我为它写了几十篇文章和教程,我是 React 18 工作组的成员,之前还参与了其他相关小组,在疫情之前,我还全职教授 React。所以相信我,当我说:React 现在真的很难理解。

我觉得理解不足源于没有与社区(教育内容和关于如何以及以何种方式构建事物的透明度)进行适当的沟通,这让我感到沮丧。

2022 年 6 月以来没有新的发布,这让人感到沮丧。让人沮丧的是,核心团队都在大声疾呼“使用框架!”与 React 18 一起,然后大多数发声的人离开了他们的工作,加入了 「拥有大型 React 框架的公司」,而「那个框架」似乎更倾向于使用 Canary 版本,而不是稳定且已发布的版本(这看起来像是“酷孩子”垄断)。编写新文档花了很长时间(而且撰写文档的人也没有得到适当的支持),以至于当你查找“React 文档”时,新文档甚至不是第一个结果,这也让人沮丧。现在有两个 React(不是说不应该有,而是对大多数人来说,这并不清晰/易于理解的心智模型),这同样令人沮丧。React 领导层明显将多元化努力放在了次要位置,而且不再有来自不同人群的多样化声音,这也是令人沮丧的。

哎,不管怎样。我真的不是想发负能量帖子。我之前批评过 React 团队的沟通方式,我确实认为他们已经有所改进。而且,当我想构建一些比较复杂的东西时,我仍然会选择 React,只是……希望我在做的时候能更开心一些。对未来我还是持乐观态度。有那么点。


附:Tanner Linsley 的回复,Tanner Linsley 是 React Query、Tanstack Router 等知名库的作者。

你激励了我, @cassidoo

自从引入 hooks 和早期的 suspense API 以来,我个人感觉 React 对少数几个概念过于迷恋。虽然从技术上来说令人印象深刻,无疑推动了单线程 UI API 的极限和边界,但这些新概念对我日常为用户提供价值的工作几乎没有什么影响(除了让“安全”/惯用地做同样的事情变得更复杂,或者围绕着我开源用户认为已经准备好上映的实验性 API 跳舞)。

我非常希望 React 能回归到最初我深爱的那种专注于客户端、对客户端性能极度重视的工具(或者至少帮我确认它仍然考虑到了我的利益)。看到其他框架继续实现那些最初让我选择 React 的动机,真是令人痛苦。

React Forget 引起了一些旧日的兴奋,但很容易被新的“特性”所吸引,而这个特性实际上是对更深层问题的反应性回答。我在这个话题上能说得最简短的是,我真的希望我们能放弃对不变性的迷恋,去真正解决响应性问题。无论是通过 Signals(拜托)还是不通过 Signals(仍然可以),这已经感觉像是最被忽视的低挂果实一段时间了(抱歉,我关注 @RyanCarniato 的信号比大多数人都要久)。

就像 Cassidy 一样,我仍然非常依赖 React,并且还在经常使用它……但是带着越来越多的不满。


再补一篇 Tom 的「对 React 发布状态越来越恼火」。原文在 https://macwright.com/2024/01/03/miffed-about-react

相对于许多人来说,我有点像是 React 的辩护者。尽管我曾经详细写过它并不适用于所有问题,我认为 React 对许多问题来说是一个好的解决方案。我认为 React 团队有着良好的意图。虽然 React 不是万能的解决方案,但它确实能解决一些问题。即使 React 被过度使用且存在缺陷,我也不认为团队是邪恶的。沉浸在我的平和态度中,等等。

然而,

React 当前的发布状态很糟糕。有两个主要的竞争 React 框架:由 Shopify 资助的 Remix 和由 Vercel 资助的 Next.js。Vercel 雇佣了许多 React 团队的成员。

自上一次 React 发布以来已经一年半了,这比任何之前的发布都要长。

Next.js 大量使用并推广即将发布的特性他们打包了 React 下一个版本的一个版本,并使用一些技巧让你觉得你在使用 React 18.2.0,而实际上你在使用一个 canary 版本。这些“canary 版本”也被 Meta 用于增量升级,其他 React 核心开发者也在那里工作。

另一方面,非 Vercel 和非 Facebook 生态系统没有这些优势。Remix 受到 React 中一个已修复但未发布的错误的影响。尝试使用 React 18.3.0 canary 版本的人将不得不在他们的 package.json 文件中使用 npm install --force 或 overrides 来整合所有内容。

这种策略,使用 Canary 版本一年半,然后再进行一次大规模升级到 React 19.0.0:我不喜欢。当然,有一些变通方法可以使用“当前”的 Canary React。但它们都是 hack,而且 Canary 版本不稳定,可能会悄无声息地包含破坏性更改总而言之,这看起来就像是 Vercel 通过将 React 团队的一部分纳入内部,不公平地获得了一年的领先优势。