由於getDefaultProps
沒有引用組件實例,因此您似乎不需要函數(因爲不需要重新綁定this
,例如),而普通的舊對象可以正常工作。在那裏使用函數的優點是什麼,爲什麼不一樣適用於propTypes
?反應:爲什麼getDefaultProps方法,而propTypes是一個普通的對象?
3
A
回答
1
propTypes
propTypes
是一個對象,因爲它是用於聲明一個道具是特定JS原語。例如:
React.createClass({
propTypes: {
optionalArray: React.PropTypes.array,
optionalBool: React.PropTypes.bool,
optionalFunc: React.PropTypes.func
}
});
這有助於確保正確使用組件。如果爲道具提供了無效值,則會在JavaScript控制檯中顯示警告。
getDefaultProps()
getDefaultProps
被用於定義props
默認值,並且被調用一次,並且創建類時緩存。
爲什麼
相信優勢,或原因而,getDefaultProps()
是一個函數,因此它可以被緩存以避免重新計算下一次使用組件。
+0
啊,功能緩存總是有意義的。謝謝! – 2015-02-26 00:06:33
+0
getDefaultProps的行爲與靜態Singleton方法類似,每次調用時都會返回一個可共享的對象。靜態,因爲它在組件實例創建之前被調用,並且它是單例的,所以它返回一個可共享的對象。 – 2015-10-10 00:59:50
相關問題
- 1. 反應:爲什麼static propTypes
- 2. 爲什麼get_default_prefix @classmethod,而不是隻是一個普通的方法
- 3. 反應propTypes的const render方法語法?
- 4. 爲什麼POJO應該是普通而不是特殊的?
- 5. 反應,什麼時候使用propTypes
- 6. 爲什麼Math是一個對象而String是一個函數?
- 7. 爲什麼FrameworkElement的FindResource()方法接受一個對象而不是字符串?
- 8. Android - 從活動中調用一個普通的對象方法
- 9. JSON響應不是一個普通的對象
- 10. 爲什麼使用Spring DAO類而不是普通方法進行接口?
- 11. 爲什麼java方法與對象而不是類相關?
- 12. 爲什麼在對象的方法中使用對象名稱而不是此?
- 13. 爲什麼singleton對象是通過類方法創建的?
- 14. 使用「發送」而不是普通方法調用的要點是什麼?
- 15. 爲什麼像節點<Item>,而不是一個普通的節點
- 16. JavaScript:爲什麼array.push()追加兩個對象而不是一個
- 17. 爲什麼兩個數字對象出現而不是一個?
- 18. 什麼是反思qooxdoo對象的正確方法?
- 19. 爲什麼使用ROLAP而不是普通的MySQL?
- 20. 爲什麼使用authentication_token而不是普通的認證過程?
- 21. 爲什麼CGContextRef不是一個對象?
- 22. mapStateToProps必須返回一個普通對象。相反收到undefined
- 23. 爲什麼MarshalByRefObject.InitializeLifetimeService返回一個對象而不是ILease?
- 24. 爲什麼調用這個方法而不是另一個?
- 25. 爲什麼UnhandledExceptionEventArgs.ExceptionObject對象而不是Exception?
- 26. propTypes中的反應錯誤
- 27. 爲什麼這裏的對象在一個方法前面?
- 28. 對象是一個方法
- 29. 在反應中輸出對象數組的正確方法是什麼?
- 30. 將對象綁定到另一個對象的正確方法是什麼?
請考慮根據ECMA2016使用'static defaultProps = { }}語法來代替調用getDefaultProps方法。 – RBT 2017-10-11 08:50:36