堆栈内的多个盒子有一个 css 类或主题 - MUI

问题描述 投票:0回答:1

我是 React js 和 MUI 组件的新手。

我正在研究以下设计,其中堆栈包含多个盒子。每个盒子都有自己的样式,堆栈中的所有盒子都相同。有没有办法为一个框定义一种样式,然后将其应用于所有框?

https://codesandbox.io/p/sandbox/angry-gwen-c986mp?file=%2Fsrc%2FDemo.tsx%3A38%2C14&layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup% 2522%253A%257B%2522方向%2522%253A%2522水平%2522%252C%2522内容类型%2522%253A%2522未知%2522%252C%2522类型%2522%253A%2522PANEL_GROUP%2522%252C %2522id%2522%253A%2522ROOT_LAYOUT% 2522%252C%2522面板%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%2 53A%2522垂直%2522%252C% 2522id%2522%253A%2522club5ghcv0007356hy9tigkpm%2522%252C%2522尺寸%2522%253A%255B100%252C0%255D%252C%2522面板%2522%253A%255B%257B%2522type% 2522%253A%2522PANEL_GROUP%2522%252C%2522contentType% 2522%253A%2522编辑%2522%252C%2522方向%2522%253A%2522水平%2522%252C%2522id%2522%253A%2522编辑%2522%252C%2522面板%2522%253A%255B%257 B%2522型%2522%253A% 2522面板%2522%252C%2522内容类型%2522%253A%2522编辑%2522%252C%2522id%2522%253A%2522club5ghcv0003356ht7gmhip2%2522%257D%255D%257D%252C%257B%2 522类型%2522%253A%2522PANEL_GROUP%2522%252C% 2522内容类型%2522%253A%2522SHELLS%2522%252C%2522方向%2522%253A%2522水平%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522面板%2522%253A%2 55B%257B%2522类型%2522% 253A%2522面板%2522%252C%2522内容类型%2522%253A%2522外壳%2522%252C%2522id%2522%253A%2522club5ghcv0004356hmdcvoml5%2522%257D%255D%252C%2522尺寸% 2522%253A%255B100%255D%257D%255D% 257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2 522id%2522%253A%2522DEVTOOLS% 2522%252C%2522面板%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2 522club5ghcv0006356h5qkqh7qn%2522%257D% 255D%252C%2522尺寸%2522%253A%255B100%255D%257D%255D%252C%2522尺寸%2522%253A%255B44.86491665069937%252C55.13508334930063%255D%25 7D%252C%2522tabbedPanels%2522%253A%257B%2522club5ghcv0003356ht7gmhip2% 2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522club5ghcu0002356h82prmvsj%2522%252C%2522模式%2522%253A%2522永久%2522%25 2C%2522类型%2522%253A%2522文件%2522% 252C%2522initialSelections%2522%253A%255B%257B%2522startLineNumber%2522%253A38%252C%2522startColumn%2522%253A14%252C%2522endLineNumber%2522%253A38%252C%2522endColumn%2522%253 A14%257D%255D%252C%2522文件路径% 2522%253A%2522%252Fsrc%252FDemo.tsx%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522club5ghcv0003356ht7gmhip 2%2522%252C%2522activeTabId%2522%253A% 2522club5ghcu0002356h82prmvsj%2522%257D%252C%2522club5ghcv0006356h5qkqh7qn%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A% 2522club5ghcv0005356hn5cg341m%2522%252C%2522模式%2522%253A%2522永久%2522%252C% 2522类型%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522端口%2522%253A0%252C%2522路径%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%25 22club5ghcv0006356h5qkqh7qn%2522%252C% 2522activeTabId%2522%253A%2522club5ghcv0005356hn5cg341m%2522%257D%252C%2522club5ghcv0004356hmdcvoml5%2522%253A%257B%2522tabs%2522%253A%255B%255D %252C%2522id%2522%253A%2522club5ghcv0004356hmdcvoml5%2522%257D%257D%252C% 2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Afalse%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D

css reactjs material-ui
1个回答
0
投票

您可以使用

sx
道具

const boxStyle = {
    my: 4,
    display: "flex",
    alignItems: "top",
    gap: 1,
    p: 2,
    ...
};

...

<Box sx={boxStyle}></Box>

或者,您可以为您的特定盒子创建一个单独的组件,例如:

const StyledBox = ({ children }) => (
  <Box
    my={4}
    display="flex"
    alignItems="top"
    gap={1}
    p={2}
  >
    {children}
  </Box>
);

...

<Stack direction="row" spacing={2} border={1} borderColor="divider"> 
    <StyledBox>
        <TargetMetricIcon fontSize="medium" /> Target Metric
    </StyledBox>
</Stack>
© www.soinside.com 2019 - 2024. All rights reserved.