例如,子組件通過position={{x: 50}}
。如何在子組件內重新分配this.props.position
等於{{x: 50, y: 0}}
反應:你如何分配對象道具的默認屬性?
回答
看起來您正在使用React;如果您還使用ES2016你就可以使用Object.assign:
var initial = {x: 0, y: 0};
var passed = {x: 50};
var result = Object.assign({}, initial, passed);
console.log(result); // { x: 50, y: 0 }
這些代碼行是否需要在每個渲染之前運行,因爲子組件無法修改它自己的道具? –
是的,如果我瞭解您的要求,您只需將新值與默認值分配給局部變量,然後在渲染時使用該變量。 Object.assign不會改變道具。 –
如果你只是做了this.props.position
你不能依賴於默認道具的工作,因爲默認情況下不會道具檢查特定的屬性失蹤該對象,但會檢查是否存在道具。
最簡單的方法是將有兩個支柱:位X &位置▲
然後在你的孩子組件,您可以同時設置默認的道具,所以如果一個被傳入,而不是其他,你可以回退到默認爲另一個。
getDefaultProps: function() {
return {
positionX: 50,
positionY: 0
};
},
另一種選擇是,以檢查是否存在它的地方被在子組件中使用,並在使用同時具有Y和X值的新對象點進行操作。
例如使用對象解構:
var {x, y=50} = this.props.position
如果預計X可能是不確定的爲y,然後你也可以給X的缺省值進行傳遞。如果this.props.position
上存在x或y,那麼它將覆蓋默認設置
這就是我試圖避免 –
可以與當時的對象解構做: VAR {X,Y = 50} = this.props.position 這將使y的50違約和x是等於這個.props.position中的任何東西。如果y確實存在,那麼它將使用該默認值 – finalfreq
會起作用,但有沒有辦法實際改變this.props的值,而不是爲結構化變量創建默認值? –
- 1. 如何分配由默認值屬性值屬性
- 2. 分配默認值的屬性
- 3. 如何爲父對象屬性設置默認綁定屬性?
- 4. 將XML反序列化爲對象時,類的默認屬性
- 5. 設置對象屬性的默認值
- 6. 如何設置對象類型的React默認道具
- 7. 將默認值分配給xsd屬性
- 8. 具有默認值的聚合物對象屬性
- 9. 使用具有默認值的屬性創建對象Python
- 10. 如何在C#類的靜態默認屬性分配默認值?
- 11. 分配屬性對象
- 12. 分配對象屬性
- 13. 對象參數的接口與默認值和默認屬性
- 14. 你如何嘲笑具有道具的Jest的反應組件?
- 15. Java對象集屬性默認
- 16. 對象直接調用默認屬性
- 17. 默認對象屬性不默認爲HTML
- 18. 如何獲取對象屬性的默認值?
- 19. 如何定義Python對象的默認屬性列表?
- 20. 如何設置JavaScript對象的默認__self__屬性
- 21. Javascript:從默認對象中填充對象中的undefind屬性
- 22. 破壞ES6默認值反應的道具
- 23. 將保留對象分配給弱屬性;對象將分配
- 24. Qt對象中是否有屬性,用作默認值屬性?
- 25. 如何將na對象屬性重置爲默認值?
- 26. 對象傳播符號如何轉換反應道具?
- 27. 具有默認屬性的HttpSession
- 28. JavaScript的分配功能,對象屬性
- 29. Python的 - 對象屬性分配失敗
- 30. 分配javascript對象屬性的問題
請參閱React:https://github.com/facebook/react/issues/2568和另一個問題:http:// stackoverflow.com/questions/29194997/react-nested-defaultprops-deep-merge –