2017-10-17 54 views
0

我想了解一些代碼。你能向我解釋一下做這個靜態contextTypes = {}的目的是什麼?爲什麼我們這樣定義它?有什麼好處?在反應組件中使用static contextTypes = {}的原因是什麼?

所以我讀的文檔,它是:從未來>https://jsfiddle.net/8hbyLopq/1/


編輯和信息開發者 -

static contextTypes = { 
    product_id: PropTypes.number, 
    size: PropTypes.number, 
    loadRelatedProducts: PropTypes.func, 
} 

enter image description here

你可以在這裏找到完整的組件代碼類型檢查。

陣營文檔說:

PropTypes出口範圍,可用於確保 您接收到的數據是有效的驗證程序。在這個例子中,我們使用了 PropTypes.string。當爲道具提供無效值時,將在JavaScript控制檯中顯示 警告。

有關的問題:

  1. 這種類型的檢查是對於從RelatedProducts組件正在添加父道具,是嗎?所以它正在檢查相關產品父母是否向我們發送了一個數字的product.id?如果沒有,會顯示控制檯日誌錯誤,對不對?

  2. 它也可以用來檢查其他輸入,因爲我們在這裏從一個redux動作導入一個函數loadRelatedProducts,對嗎?

  3. 我忘了關於此事的事嗎?

+1

您是否閱讀過官方文檔的相關頁面?那裏有一個相當廣泛的解釋。 https://reactjs.org/docs/typechecking-with-proptypes.html。如果你閱讀它,我會很樂意解釋,但仍然有問題。 – Chris

+1

React擁有關於[Context](https://reactjs.org/docs/context.html)的良好文檔。你檢查了嗎? – bennygenel

+0

我在https://reactjs.org/docs/context.html之前閱讀過,但仍然感到困惑。但https://reactjs.org/docs/typechecking-with-proptypes.html幫助我瞭解了這一點。所以@Chris和Benny請檢查我的問題的編輯版本,並告訴我是否正確。 –

回答

1
  1. 這種類型的檢查是對於從RelatedProducts組件正在添加父道具,是嗎?所以它正在檢查相關產品父母是否向我們發送了一個數字的product.id?如果沒有,會顯示控制檯日誌錯誤,對不對?

正確。是的,以上所有。

  • 它也可以被用於檢查其他輸入,因爲我們在這裏從Redux的動作導入功能loadRelatedProducts,是嗎?
  • 正確。代碼很明顯。

    我忘了關於此事的事嗎?

    不是。這只是類型檢查,以確保您獲得的是符合標準的情況下:

    • 是正確的類型(字符串/數字/功能等)
    • 首先被傳遞的,如果它們設置要求與isRequired。否則,可以選擇傳遞它,只要類型正確如果您通過
    相關問題