最近几年都在写 React Hooks,越来越发现这货其实缺点和优点一样多,视图函数一有变动就重新运行一开始我是拒绝的,后来被洗脑后勉强认为是个合理的符合逻辑的行为并愉快地写了二年,但还是时不时会被这个底层行为搞得有点烦燥,对 React 算是脱粉了
当然替代是有,Vue 版 Hooks 就不会无休止地重运行函数,但是不知道为什么对 Vue 喜欢不起来(比如不喜欢有模板功能,虽然可以不用但眼见着烦
svelte 又是另一种,不过出于对用编译器魔改 JS 的这种重手段来搞框架这种莫名其妙的心结对这个框架喜欢不起来,编译出来的东西又看着又太屎了
昨天把玩了一天 Solid,相当喜欢。这个框架也和 svelte 不用 VDOM,号称可以精细更新 DOM 性能无敌不做无用功。 当然性能不是我最主要的关注点,主要是这货 API 类 React 但它的视图函数不会重复运行,而且因为不用 VDOM,操作的对象直接就是真实 DOM Element,感觉接地气多了(比如视图返回一个<div ...>,它返回不是一个 React element 而是真.HTMLDivElement )
另外虽然也用的 JSX 语法,但确实也是用编译器的不是用原本的 JSX 转换语义。但转出来的东西比 svelte 易读多了。
总之,优点是优能极高,API 类 React Hooks 且简单(至少概念比 Vue 少),视图不会重复运行。 大缺点暂时没发现,发现几个小缺点,比如因为 Reactive,变量不象 React 是普通的变量而是加料的,用的时候要加(),操作几个复杂变量如 props,children 要用它提供的 helper,不过只是开发时的规则习惯就好了,不是 React Hooks 这种运行时的无法避免的缺点。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.