У меня есть несколько компонентов, отображаемых на основе определенных условий, из-за которых размер родительского контейнера должен измениться.
export const Container = styled.div`
display: grid;
font-family: Nunito Sans;
padding: 32px 40px 80px 80px;
background-color: transparent;
grid-template-columns: 980px;
grid-template-rows: 40px minmax(64px, max-content);
${props =>
props.extra &&
css`
grid-template-rows: 40px min-content minmax(64px, max-content);
`};
grid-row-gap: 16px;
`;
Я добавляю опору extra
, чтобы размер контейнера менялся в зависимости от добавления компонентов.
renderData = () => {
const attachments = [a, b, c, d, e];
if ( attachments.length > 0 ) {
return (
<Container extra>
<DetailsHeader />
<DetailsAttachments attachments={attachments} />
<DetailsMisc />
</Container>
)
}
return (
<Container>
<DetailsHeader />
<DetailsMisc />
</Container>
)
};
Так что в приведенном выше коде большая часть строка кода повторяется.
В основном, если в массиве вложений есть элементы, показывается только компонент DetailsAttachments
, в противном случае - обычный контейнер с 2 компонентами.