更新時間:2024-04-17 17:09:12作者:佚名
實名反對@徐飛叔叔的回答(未加粗部分)
因為在我看來,這是官方團隊正在傳達的一個信號:這是我們期望的用法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,盡管它有“”之類的、自上而下的數據流,但缺乏,永遠如此。 也許是這樣,是時候把它調低一點了。
多于。
請注意,這篇文章是我的。