更新時間:2024-04-17 17:09:12作者:佚名
實名反對@徐飛叔叔的回答(未加粗部分)
因為在我看來,這是官方團隊正在傳達的一個信號:這是我們期望的用法class是什么意思,之前的類組件是不合適的。
這個結(jié)論本身并沒有什么問題。 核心團隊確實覺得Hooks是一種更符合React思想的編寫方式。
但接下來的前提只是判斷事實……我是一句一句說的:
因為React官方團隊不使用它,他們自己使用該語言并編寫,
感謝叔叔給我打了這么大的廣告(恭喜我在本周發(fā)布的2018年狀態(tài)中超越了Elm!我還獲得了“最佳潛力獎”)。
事實是, 領(lǐng)導(dǎo)的核心團隊只做也只關(guān)心它,但諸如 、 等“前React核心團隊成員”和另一群人正在做這件事。 兩者相對獨立,Hooks并沒有受到任何直接影響。
他們的團隊都是函數(shù)式編程專業(yè)人士,其中大多數(shù)人強烈反對GoF設(shè)計模式,討厭Java。
事實是,在我的印象中,核心團隊的大多數(shù)成員都在 上公開贊揚函數(shù)式編程和基于 ML 的語言的優(yōu)點或其特性:每天都會提到 OCaml,至少會提到 Rust//Swift 。 我不喜歡 Dart,因為它沒有 ADT,而且沒有。 Dan 和 Redux 主要受 Elm 影響。 Dan曾經(jīng)提到,學(xué)習(xí)高階函數(shù)后,一半的設(shè)計模式被淘汰,Dan主要利用函數(shù)的可組合性,其他成員不詳。 關(guān)于這位叔叔的其他判斷就更不得而知了。
從這個角度來看,你找不到他們有任何認同類成分的傾向。 那么之前為什么要這樣寫呢? 這很有趣。
不知道大叔指的是ES6的Class API還是原來的API。
事實是 React 使用了 React. 2013年Tom首次發(fā)布時的API。2015年class是什么意思,React v0.13.0 Beta 1首次提出支持Class(即ES6 Class和ES7+)API。 您甚至可以使用 ES3 模塊模式(即返回對象的函數(shù))來編寫。
為什么首先使用類 API? 昨天我也向Core成員詢問了我叔叔的看法:
: God React api 引入了 FP 'lol
React API不是可以設(shè)計得對新手更友好嗎?
:所以我想 JS 中的 React 首先也是 .
先把React做成JS吧,就是為了挨罵……
: 他們來找我們了。
為什么都是我們的錯...
問題是,即使在 FB 內(nèi),很明顯并非所有程序員都熟悉函數(shù)式編程的概念。 做前端框架是為了用的。 如果有大家熟悉的概念可以比較,為什么要刻意用大家都不熟悉的概念呢?
遷移到 ES6 Class 的主要目的是減少 React 特定的 API。 畢竟,這并不意味著它比 ES6 Class 功能更多,只是因為它“接受一個函數(shù)”......
:React選擇了class api到react-api到api,并且匹配得很好。 不只是它一個
所以大叔,你這么說,難免有陰謀論的嫌疑。
我想問一個問題:如果從一開始就只是hook的形式,而類的寫法從來沒有出現(xiàn)過,你還會一見鐘情嗎? 您更喜歡哪一個:具有函數(shù)概念的類或視圖庫? 那么你為什么不喜歡 Cycle.js 呢?
世界上最大的仇恨從來不是異端之間,而是同一宗教的信徒之間互相指責(zé)對方為異端。
事實是,React/一直希望以更友好的方式給其他開發(fā)者帶來一些好的概念,而不是奉行這個宗教或那個宗教。 不管是不是React的新API,更多的是在我驚喜地發(fā)現(xiàn)React的函數(shù)式思維被更多人接受和認可之后,我敢于邁出的下一步。 畢竟FB做的任何事情,首先都要讓一大批內(nèi)部產(chǎn)品程序員高興,而且他們也可能對函數(shù)式編程不熟悉(這仍然是進一步前進的最大障礙之一,無論是FB內(nèi)部還是外部)。
回想起來,真正吸引我進入 React 的是 JSX 帶來的聲明式風(fēng)格和組件內(nèi)聚力。 它立即將我從“厭倦在模板和 JS 中設(shè)置鉤子”中解脫出來。 一切看起來都是那么簡單、直接、自然。 但當時我接觸過的JS庫就只有OO和/Kissy/YUI//Vue。 我什至從未聽說過函數(shù)式編程這個術(shù)語。 不要談?wù)?Monad。 我曾經(jīng)使用React進行純函數(shù)、引用透明等,在經(jīng)歷了很多陷阱之后我花了很長時間才理解它(
事實是,React/Team 一直對“純函數(shù)式編程信徒”的聲音保持警惕。 前不久添加的類似swift的語法糖吸引了一些OCaml的用戶。 “為什么需要這個語法糖?我們應(yīng)該教用戶使用它。” Monad >>=!”這樣的反對意見。同樣,盡管 Hooks 借用了很多先進的 FP 概念,但 Core Team 卻以一種非常友好、友善的方式向大家介紹,而不是直接說:啊,這里我們借用了 Monad,那里我們是。
@ 和 @方英hang 分別在我的想法“React Hooks are ”下評論,“其實這只是證明你不需要了解 就可以使用它們”和“這說明有問題”跟之前功能布道者的表達路徑一樣,總是先拋出一個詞,然后解釋一下monad這個詞,講道的捷徑就是從需求開始“就是這個意思。 很多有趣、實用、先進的概念并不一定需要通過復(fù)雜、基礎(chǔ)的方法來傳達。 這難道不是計算機科學(xué)中最重要的“抽象能力”嗎?
React 官方文檔是這樣描述 Hooks 的:
鉤住你不去學(xué)習(xí)或。
如果“函數(shù)式編程”在這樣的說教下能夠被更多的人接受和欣賞,這只能說明“函數(shù)式編程”背后的數(shù)學(xué)和理論背后的思想是有價值的,我們應(yīng)該把它抽象出來。 讓更多的程序員受益。
讓我們以 Dan 慶祝 Vuejs 星數(shù)突破的推文作為結(jié)束:
我也認為這是一個 React,盡管它有“”之類的、自上而下的數(shù)據(jù)流,但缺乏,永遠如此。 也許是這樣,是時候把它調(diào)低一點了。
多于。
請注意,這篇文章是我的。