使用的文档/例子的覆盖材料UI造型与风格的成分,我已经成功地风格内的根源,“更深层次的元素”
ExpansionPanel
和ExpansionPanelDetails
。
但是,当我使用相同的技术返回ExpansionPanelSummary
传递给的函数的覆盖时,DOM中styled()
的ExpansionPanelSummary
移动以及整个移动将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>
当我将上述技术应用于时的DOM ExpansionPanelSummary
:
<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>
这个困难与使用样式化组件无关,而仅与包装ExpansionPanelSummary
在另一个组件中有关。
您可以使用以下包装方式类似地重现此内容ExpansionPanelSummary
:
const MyCustomSummary = props => {
return (
<ExpansionPanelSummary {...props} expandIcon={<ExpandMoreIcon />}>
<Typography>{props.text}</Typography>
</ExpansionPanelSummary>
);
};
有几个类似的组件组,其中Material-
UI父组件会查找特定类型的子组件,并特别对待该子组件。例如,您可以在ExpansionPanel
if (isMuiElement(child, ['ExpansionPanelSummary'])) {
summary = React.cloneElement(child, {
disabled,
expanded,
onChange: this.handleChange,
});
return null;
}
幸运的是,Material-UI通过一种简单的方法可以通过muiName
属性告诉您的自定义组件与特定的Material-UI组件相同:
MyCustomSummary.muiName = "ExpansionPanelSummary";
或者您的情况如下所示:
export const ExpansionPanelSummary = styled(props => (
<MUIExpansionPanelSummary
{...props}
/>
))``;
ExpansionPanelSummary.muiName = "ExpansionPanelSummary";
问题内容: 我正在开发页面,现在以我的CSS样式我有以下代码行 为我的页面。现在,我的某些页面不需要此行 我可能会在页面的内部CSS中覆盖它,这将导致原始行为被忽略? 问题答案: 使用不推荐,但在这种情况下,我想你应该- 在您的内部CSS中编写此代码-
问题内容: 我只是简单地尝试通过FireBug在生成的HTML中查找组件的名称,然后在JSF项目中手动定义的CSS中对其进行了更改,但无法覆盖PrimeFaces的CSS定义。预先感谢您的任何想法。 问题答案: 如果使用primefaces2.2.1,请使用h:outputStylesheet标记并将其包含在h:body中,而不要包含在h:head中,以覆盖primefaces样式表,与h:out
问题内容: 我有使用内联样式的标记,但是我无权更改此标记。如何仅使用CSS覆盖文档中的内联样式?我不想使用jQuery或JavaScript。 HTML: CSS: 问题答案: 覆盖内联样式的唯一方法是使用CSS规则旁边的关键字。以下是一个示例。 重要笔记: 使用不是一个好的做法。因此,您应避免同时使用内联样式。 将关键字添加到任何CSS规则后,该规则就可以 强行优先 于该元素的 所有其他CSS规
问题内容: 我查看了Stack Overflow,但没有找到解决方案,我知道如何在样式存在的情况下覆盖样式,只需更改其属性即可。但是现在我有一种奇怪的样式可以覆盖 这是我所拥有的一个例子 首先我有一个: 现在,我需要使用以下一种样式来覆盖该样式: 问题是第一种样式会追加第二种,但是我不希望那样,在第二种样式中我只需要一行,而不是从第一种样式追加? 问题答案: 您可以将另一个类添加到元素中,而不是重
我正在写java web应用程序的扩展。我用maven覆盖插件将这个应用程序添加到扩展中,并使用主应用程序中的web.xml文件和webapp文件夹。我还想用jetty嵌入式服务器为我的扩展编写集成测试平台。我试过了
我正在使用java和Apache POI库对input.xlsx文件进行excel验证。