我觉得咱俩说的东西本质是一样的。
react为什么走functional单向数据流路线?不是因为它的props和state技术上无法被直接赋值修改,本质原因是因为它的reactivity机制是检测不到直接赋值的,所以必须走setState()之类的显式触发,整体重新生成vdom然后diff。
vue的data为什么不需要setData()?因为用了proxy/setter呗,所以也就没有必要非要使用单项数据流了。
说回现在这个新api,照样一点儿都不functional啊。不是说把object options改成了函数,就functional了。functional意味着无内部跨调用状态,无副作用,数据不可变,等等。vue的这套新函数api,包括react的hooks,都是在解决如何产生和管理副作用的问题,所以和“functional”毫无关系。
rfc里甚至明确说了,新的function-based api无法用于vue的functional component。
我觉得大家感受到的不适,主要是来自形式上从声明式的配置式api(旧对象api其实就是个配置文件一样的东西)变成了命令式一步步调用各种功能来初始化组件的api。这个很多人认为丑,不简洁,乱。
【 在 eGust (十年) 的大作中提到: 】
: 内部实现什么样,对使用者来说并不重要,暴露给用户的 api 才决定代码的组织形式。
: react 的形式是 functional 接口,数据的组织形式是单向的,整体概念上是一致的。
: vue 的组织形式可一点儿都不 functional,这点对不熟悉 fp 的用户是非常友好的。再加上 template 为主(我只在 storybook 里面用 jsx,因为实在不想专门写控件),导致不得不制造许多概念,才能满足代码复用的需求,比如 mixin、slot 什么的。
: ...................
--
FROM 171.217.142.*