由於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. 爲什麼Math是一個對象而String是一個函數?
- 5. 反應,什麼時候使用propTypes
- 6. 爲什麼FrameworkElement的FindResource()方法接受一個對象而不是字符串?
- 7. JSON響應不是一個普通的對象
- 8. 爲什麼java方法與對象而不是類相關?
- 9. 爲什麼singleton對象是通過類方法創建的?
- 10. 使用「發送」而不是普通方法調用的要點是什麼?
- 11. 爲什麼像節點<Item>,而不是一個普通的節點
- 12. JavaScript:爲什麼array.push()追加兩個對象而不是一個
- 13. 爲什麼CGContextRef不是一個對象?
- 14. mapStateToProps必須返回一個普通對象。相反收到undefined
- 15. 爲什麼MarshalByRefObject.InitializeLifetimeService返回一個對象而不是ILease?
- 16. 爲什麼在方法中拋出一個普通的異常不好?
- 17. 爲什麼UnhandledExceptionEventArgs.ExceptionObject對象而不是Exception?
- 18. 對象是一個方法
- 19. 爲什麼這裏的對象在一個方法前面?
- 20. 在反應中輸出對象數組的正確方法是什麼?
- 21. propTypes中的反應錯誤
- 22. 將對象綁定到另一個對象的正確方法是什麼?
- 23. 將數據反序列化爲模擬對象的好方法是什麼?
- 24. (React.js)爲什麼反應無法找到對象?
- 25. 爲什麼string.length()是一個方法,而int []。是一個長度屬性?
- 26. 對象值從什麼是在方法
- 27. 這是一個通用反序列化對象的好方法嗎?
- 28. 爲什麼不通過原型鏈的對象繼承方法?
- 29. PHP和Codeigniter。如何返回一個數組對象而不是普通數組?
- 30. 需要RxJS說明:如何返回一個普通對象而不是Observable
請考慮根據ECMA2016使用'static defaultProps = { }}語法來代替調用getDefaultProps方法。 – RBT 2017-10-11 08:50:36