【发布时间】:2023-03-04 13:35:01
【问题描述】:
使用the docs/examples 来覆盖带有样式组件的Material UI 样式,我设法在ExpansionPanel 和ExpansionPanelDetails 中设置了根和“更深层元素”的样式。
但是,当我使用相同的技术从传递给 styled() 的函数中返回覆盖的 ExpansionPanelSummary 时,ExpansionPanelSummary 在 DOM 中移动,整个 ExpansionPanel 不再正确呈现。
有问题的技术,应用于ExpansionPanel(这在容器ExpansionPanel 上按预期工作):
import MUIExpansionPanel from '@material-ui/core/ExpansionPanel';
export const ExpansionPanel = styled(props => (
<MUIExpansionPanel
classes={{expanded: 'expanded'}}
{...props}
/>
))`
&& {
...root style overrides
}
&&.expanded {
...expanded style overrides
}
`;
ExpansionPanel 和朋友的典型 DOM(类名缩写):
<div class="MuiExpansionPanel...">
<div class="MuiExpansionPanelSummary..." />
<div class="MuiCollapse-container...>
<div class="MuiCollapse-wrapper...>
<div class="MuiCollapse-wrapperInner...>
<div class="MuiExpansionPanelDetails..." />
</div>
</div>
</div>
</div>
当我将上述技术应用于ExpansionPanelSummary时的DOM:
<div class="MuiExpansionPanel...">
<div class="MuiCollapse-container...>
<div class="MuiCollapse-wrapper...>
<div class="MuiCollapse-wrapperInner...>
<div class="MuiExpansionPanelSummary..." />
<div class="MuiExpansionPanelDetails..." />
</div>
</div>
</div>
</div>
为了完整起见,这是我对ExpansionPanelSummary 所做的事情的最小复制,它触发了 DOM 切换:
export const ExpansionPanelSummary = styled(props => (
<MUIExpansionPanelSummary
{...props}
/>
))``;
我的 JSX 是标准的 ExpansionPanel 设置:
<ExpansionPanel>
<ExpansionPanelSummary>
Summary Label
</ExpansionPanelSummary>
<ExpansionPanelDetails>
<div>Some Content</div>
</ExpansionPanelDetails>
</ExpansionPanel>
【问题讨论】:
标签: javascript css reactjs material-ui styled-components