В приведенном ниже простом примере я ищу способ получить, например, CardBody
child.
const Card = ({children}) => {
const cardHeadChild = ...;
const cardBodyChild = ...;
return (
<div>
{cardHeadChild}
{cardBodyChild}
</div>
)
}
const CardHead = () => <div>Head</div>
const CardBody = () => <div>Body</div>
// Usage:
<Card>
<CardHead>
<CardBody>
</Card>
Я не могу получить по индексу (например: React.Children.toArray(children)[1]
), потому что потомки являются опциональными.
Я пробовал что-то вроде этого:
React.Children.forEach(children, child => {
if(child.type.name === 'CardBody') cardBodyChild = child
// or
if(child.type.displayName === 'CardBody') cardBodyChild = child
..
})
, но это не работает, когда компонент упакован в HOC.
Любое решение?