hackwaly / blog

我的博客
8 stars 0 forks source link

React 有毒 #1

Open hackwaly opened 8 years ago

hackwaly commented 8 years ago

我接触 React 的时候它才刚发布,但我完全想象不到 React 会发展到现在这样火。现在各种 React 的介绍文章,也不用我多废话 React 是一个什么样的东西了。

我这里只想泼一泼冷水,说一说 React 不太好的地方:

  1. 另立标准,这个真的很讨人厌。不光是 classNamehtmlFor,驼峰化的属性,还不支持命名空间属性。既不是 HTML,也不是 XML。你不能直接复制使用 HTML 代码了,这加重了用户的负担。
  2. 组件只支持实际 DOM 零个或者一个节点,不支持多个节点。这个限制导致你很多时候在做组件抽象的时候不得不引入没必要的包裹节点. 实际上,目前你没办法用 JSX 语法表达一个 DocumentFragment.。相关 Issue https://github.com/facebook/react/issues/2127
  3. 函数式看上去很美,用起来很方便,但是性能是真差。React 官方说现代浏览器这点性能损失相对于 DOM 更新可以忽略,但实际上它的渲染模型在很多情形下是低效的。就连它最擅长的组件化,也因此只能避开布局功能。你可以想象一下用 React 写的带布局功能的组件系统,在 resize 的时候会有多低效(这里发现一个demo https://rawgit.com/jvanderberg/react-box-layout/master/demo/demo1.html )。
  4. 一些其他很丑陋的地方,比如说生成的 react-id 。还有你去看 React 更新日志的话,你会看到这个版本新支持了什么事件,有一个新版本支持了什么事件。这些东西为什么不提供扩展能力,反而让开发者受制于 React。
Hi-Rube commented 8 years ago

ylxdzsw commented 6 years ago

现在有比较方便的语法可以表达多个节点了 https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html#jsx-fragment-syntax