0
正如標題所述:是否像下面的僞碼被認爲是不好的?傳遞組件作爲道具被認爲是不好的做法?
<Outer
a = { ComponentA }
b = { ComponentB }
/>
var Outer = (props) => {
var ComponentA = props.a;
var ComponentB = props.b;
// do fancy stuff
// ...
return (
<div>
<ComponentA { ...fancypropsForA } />
<ComponentB { ...fancypropsForB } />
</div>
);
}
舉個例子:我用它來通過傳遞一個組件來顯示樹數據,該組件將呈現單個節點的數據。
編輯
按照要求,我將努力使我的問題更加清楚一點。 有一個組件有一些邏輯和一些標記,每當你使用這個組件時都是一樣的。但是該標記中有兩個(或更多)位置應該可以替換。
查看顯示整個月份的日曆。有一個組件呈現單獨的日期,一個呈現星期幾(在頂部的欄中)。 您想在多個地方重複使用該日曆,但每次需要日期/週日組件的不同標記。實現這一
一種方法是:
<Calendar
data={ data }
weekdayComponent={ MyWeekDayComponent }
dateComponent={ MyDateComponent }
/>
<Calendar
data={ data }
weekdayComponent={ SomeOtherWeekDayComponent }
dateComponent={ SomeOtherDateComponent }
/>
所以,我發現這工作。但我不確定這是否真的很糟糕。
謝謝您的建議;雖然我無法在您鏈接的特定頁面中找到此方案,但我在該頁面的相關文檔中找到了它:https://facebook.github.io/react/docs/create-fragment.html 甚至有一個這個 – cdx
的proptype在你的編輯中刪除了實際上幫助我的鏈接。 關於對象:使用 而不是使用MyTree = withTree(MyNode)更直觀。 '? –
cdx
好吧,所以再次通過proptypes doc,我想我錯誤地解釋了「節點」proptype。但有「React.PropTypes.element」和文檔狀態「一個React元素」,所以我想即時通訊罰款嗎? – cdx