1. 程式人生 > 實用技巧 >react-React深入-一等公民-props-onChange

react-React深入-一等公民-props-onChange


title: '[react]深入 - 一等公民 props & onChange'
date: 2017-08-23 10:05:07
tags:

  • react
  • reactjs
  • props
  • onChange
  • 框架
  • redux
    categories:
  • 技術

寫在前面

這篇部落格的前身是 《React 新手必須知道的10件事》,結果寫著寫著,「每件事」都遠遠超過了預計的300~500字的限制。給讀者的閱讀造成了極大的困擾。故將《10件事》拆開成若干篇,每一篇只講一個主題。

正文

React 最推薦的資料互動方式是:props & onChnage。在這種互動方式裡:對於一個可視元件 ComponentA

,用 props 來向它傳送資訊,而用 onChange 回撥函式來接收 ComponentA 傳送的·資訊。在程式世界裡,我們更喜歡把上述「互動方式」稱為「介面」,雖然這個「介面」不是我們在面嚮物件語言裡的 interface,但是跟 interface 有著類似的功能。 我們暫且把這個「介面規範」取名為 「props & onChange 介面規範」。

React 還是給了另外一種方法來進行資料互動:ref & method。在這種互動方式裡,我們通過 <ComponentA ref={ r => this.refOfComponentA = r } 的方式來獲得 ComponentA

物件的引用,然後用 this.refOfComponentA.someMethod() 來向它傳送資訊。我們把這互動方式稱為 「ref & method 介面規範」。在典型的客戶端開發環境裡(iOS、Android、Windows PC等),這種方式更為常見,並且對函式呼叫更加友好,更「像」程式語言。但是,對於 React 新手,我們強烈不建議使用這種藉口規範,除非你對 React 整個機制非常瞭解,仍然想用它。因為它嚴重破壞了 React 元件的一致性。原因有:

  1. React 的可視元件的層級結一般是在 jsx 檔案中以一種類似於 html 的語言來表示的,這種表示方式既方便又直觀,表達力很強。在這種特殊的 jsx 語言裡,「props & onChange介面規範」很容易且自然的被遵守。而如果用 「ref & method介面規範」,你不得不跳轉到很多行以外,才能明白資訊的傳遞過程,既不利於程式碼編寫,也不利於閱讀。
  2. 我們避免不了用 props 方式來進行資料傳遞。我們說「避免不了」,因為很多原因,在此僅列舉兩個:一、jsx 檔案中,Html 內建元素只能通過 props 來傳遞引數;二、很多第三方庫(如果我們在開發一個大型專案,必定有很多「輪子」不用自己造),也必須通過 props 來傳遞引數。所以,props 不可避免;而同時存在兩種介面規範,是沒有意義且容易出錯的。
  3. 第三個原因可能比較「經驗化」。如果現在不能理解和認同,你聽聽就好;反正,當你使用過的優秀開源框架足夠多,你肯定會明白的:當你新接觸一個框架時,暫時拋棄自己以往的習慣,轉而遵守它的語言規範,是最好的選擇。原因很簡單:
    1. 一個框架從出生到出名,一定有自己與眾不同的框架思想,才能從其他同類型框架中脫引而出。時間的驗證,是有意義的。
    2. 過於輕率的使用其他的程式設計思想,會多處碰壁;也不利於你真正瞭解此框架的優勢和瓶頸。