实名反对@徐飞叔叔的回答(未加粗部分)
因为在我看来,这是官方团队正在传达的一个信号:这是我们期望的用法class是什么意思,之前的类组件是不合适的。
这个结论本身并没有什么问题。 核心团队确实觉得Hooks是一种更符合React思想的编写方式。
但接下来的前提只是判断事实……我是一句一句说的:
因为React官方团队不使用它,他们自己使用该语言并编写,
感谢叔叔给我打了这么大的广告(恭喜我在本周发布的2018年状态中超越了Elm!我还获得了“最佳潜力奖”)。
事实是, 领导的核心团队只做也只关心它,但诸如 、 等“前React核心团队成员”和另一群人正在做这件事。 两者相对独立,Hooks并没有受到任何直接影响。
他们的团队都是函数式编程专业人士,其中大多数人强烈反对GoF设计模式,讨厌Java。
事实是,在我的印象中,核心团队的大多数成员都在 上公开赞扬函数式编程和基于 ML 的语言的优点或其特性:每天都会提到 OCaml,至少会提到 Rust//Swift 。 我不喜欢 Dart,因为它没有 ADT,而且没有。 Dan 和 Redux 主要受 Elm 影响。 Dan曾经提到,学习高阶函数后,一半的设计模式被淘汰,Dan主要利用函数的可组合性,其他成员不详。 关于这位叔叔的其他判断就更不得而知了。
从这个角度来看,你找不到他们有任何认同类成分的倾向。 那么之前为什么要这样写呢? 这很有趣。
不知道大叔指的是ES6的Class API还是原来的API。
事实是 React 使用了 React. 2013年Tom首次发布时的API。2015年class是什么意思,React v0.13.0 Beta 1首次提出支持Class(即ES6 Class和ES7+)API。 您甚至可以使用 ES3 模块模式(即返回对象的函数)来编写。
为什么首先使用类 API? 昨天我也向Core成员询问了我叔叔的看法:
: God React api 引入了 FP 'lol
React API不是可以设计得对新手更友好吗?
:所以我想 JS 中的 React 首先也是 .
先把React做成JS吧,就是为了挨骂……
: 他们来找我们了。
为什么都是我们的错...
问题是,即使在 FB 内,很明显并非所有程序员都熟悉函数式编程的概念。 做前端框架是为了用的。 如果有大家熟悉的概念可以比较,为什么要刻意用大家都不熟悉的概念呢?
迁移到 ES6 Class 的主要目的是减少 React 特定的 API。 毕竟,这并不意味着它比 ES6 Class 功能更多,只是因为它“接受一个函数”......
:React选择了class api到react-api到api,并且匹配得很好。 不只是它一个
所以大叔,你这么说,难免有阴谋论的嫌疑。
我想问一个问题:如果从一开始就只是hook的形式,而类的写法从来没有出现过,你还会一见钟情吗? 您更喜欢哪一个:具有函数概念的类或视图库? 那么你为什么不喜欢 Cycle.js 呢?
世界上最大的仇恨从来不是异端之间,而是同一宗教的信徒之间互相指责对方为异端。
事实是,React/一直希望以更友好的方式给其他开发者带来一些好的概念,而不是奉行这个宗教或那个宗教。 不管是不是React的新API,更多的是在我惊喜地发现React的函数式思维被更多人接受和认可之后,我敢于迈出的下一步。 毕竟FB做的任何事情,首先都要让一大批内部产品程序员高兴,而且他们也可能对函数式编程不熟悉(这仍然是进一步前进的最大障碍之一,无论是FB内部还是外部)。
回想起来,真正吸引我进入 React 的是 JSX 带来的声明式风格和组件内聚力。 它立即将我从“厌倦在模板和 JS 中设置钩子”中解脱出来。 一切看起来都是那么简单、直接、自然。 但当时我接触过的JS库就只有OO和/Kissy/YUI//Vue。 我什至从未听说过函数式编程这个术语。 不要谈论 Monad。 我曾经使用React进行纯函数、引用透明等,在经历了很多陷阱之后我花了很长时间才理解它(
事实是,React/Team 一直对“纯函数式编程信徒”的声音保持警惕。 前不久添加的类似swift的语法糖吸引了一些OCaml的用户。 “为什么需要这个语法糖?我们应该教用户使用它。” Monad >>=!”这样的反对意见。同样,尽管 Hooks 借用了很多先进的 FP 概念,但 Core Team 却以一种非常友好、友善的方式向大家介绍,而不是直接说:啊,这里我们借用了 Monad,那里我们是。
@ 和 @方英hang 分别在我的想法“React Hooks are ”下评论,“其实这只是证明你不需要了解 就可以使用它们”和“这说明有问题”跟之前功能布道者的表达路径一样,总是先抛出一个词,然后解释一下monad这个词,讲道的捷径就是从需求开始“就是这个意思。 很多有趣、实用、先进的概念并不一定需要通过复杂、基础的方法来传达。 这难道不是计算机科学中最重要的“抽象能力”吗?
React 官方文档是这样描述 Hooks 的:
钩住你不去学习或。
如果“函数式编程”在这样的说教下能够被更多的人接受和欣赏,这只能说明“函数式编程”背后的数学和理论背后的思想是有价值的,我们应该把它抽象出来。 让更多的程序员受益。
让我们以 Dan 庆祝 Vuejs 星数突破的推文作为结束:
我也认为这是一个 React,尽管它有“”之类的、自上而下的数据流,但缺乏,永远如此。 也许是这样,是时候把它调低一点了。
多于。
请注意,这篇文章是我的。