2017-08-14 62 views
1

例如所有的孩子,我怎麼能實現addStyles功能在這個片段中我如何添加樣式元素

const addStyles = // ... 
const Element = ({ children }) => (
    <div>{children.map(addStyles)}</div> 
); 

感謝

+0

讓我們看看你已經嘗試了什麼。 – Chris

+0

我試着提取類名,我的包裹組件,針對利用CSS ... – pabombs

回答

2

使用來自Facebook提供的React.Children.map功能。

對包含在此設置爲thisArg的子項中的每個直接子項調用一個函數。如果孩子是鍵控片段或陣列將運行:該功能將永遠不會被通過的容器對象。如果children爲null或未定義,則返回null或undefined,而不是數組。

然後用適當的樣式返回每個孩子的克隆,就像使用React.cloneElement一樣。這將淺顯地合併第二個參數中的對象中提供的任何屬性。那些你可以用它來覆蓋孩子的當前樣式。你可能會提供{ className: "newClassName" }作爲第二個參數,如果你喜歡。

const StylishComponent = ({ children }) => { 
    const iLikeBlueStyles = { color: "blue" }; 

    const clones = React.Children.map(children, child => { 
     return React.cloneElement(child, { style: iLikeBlueStyles }); 
    }); 

    return (
     <div> 
      {clones} 
     </div> 
    ); 
}; 
+0

沒錯兒,這就是我一直在使用遍歷孩子什麼,但它仍然沒有幫助我實現了'addStyles'功能 – pabombs

+1

生病樣本片段添加到答案即將 –

+1

讓我知道,如果這有助於! –