
// jsx in React.js
<Table>
<StyledTableBody>
{tradeInData.map(dataRow => {
return (
<FlexTableRow key={dataRow.productId}>
<StyledTableCell style={{flex : "3 1 auto !important"}}>
<ProductNameDiv>
<p>{dataRow.productName} ({dataRow.quantity})</p>
{showDeleteIcon && <DeleteOutline
style={{ cursor : "pointer" }}
/>}
</ProductNameDiv>
<SecondaryText>Id: {dataRow.productId}</SecondaryText>
</StyledTableCell>
<StyledTableCell style={{flex : "1 1 auto !important"}}
>{dataRow.price}</StyledTableCell>
</FlexTableRow>
)}
)}
</StyledTableBody>
</Table>
Я хочу, чтобы flexbox на FlexTableRow
показывал 2 элемента под ним в соотношении размеров 3: 1. Вы можете видеть, что сейчас это около 9: 1.
Похоже, что flexbox на ProductNameDiv
занимает все пространство. Я не могу установить его на display: inline-block
, так как это также flexbox.
Я попытался inline-block
на SecondaryText
div, и это все равно перезаписывало авто поля.
Как это можно решить, если 1) сохранить горизонтальное центрирование текста, 2) отобразить 2 дочерних элементов FlexTableRow
примерно в 3: 1 по горизонтали?
// styled components
const StyledTableBody = styled(TableBody)`
* {
text-align: center;
}
`;
const FlexTableRow = styled(TableRow)`
display: flex;
> * {
border: 2px solid goldenrod !important;
}
`;
const StyledTableCell = styled(TableCell)`
border: 1px solid rgba(200, 200, 200, .6);
border-radius: 4px;
padding: 0 !important;
margin: 0 !important;
`;
const ProductNameDiv = styled.div`
border: 2px dashed lightgreen;
display: flex;
justify-content: center;
align-items: center;
`;
const SecondaryText = styled.p`
display: inline-block;
border: 2px dotted lightcoral;
font-style: italic;
font-size: .9rem;
margin: -12px auto 0 auto;
`;