javascript - 样式化组件/React - 外部元素样式

标签 javascript css reactjs styled-components

我正在使用 Material UI组件和 MaterialTable我想使用 StyledComponents 设计组件的样式

但是当我尝试使用 StyledComponents 应用样式时,我没有得到想要的结果

CodeSandBox Online Example

例子:

import styled from 'styled-components'
import MaterialTable from "material-table";

export const MaterialTableStyled = styled(MaterialTable)`
    /* STYLE FOR FILTER ROW */
    tbody > .MuiTableRow-root:first-child {
        background-color: #F1F3F4 !important;
    }
`

当我使用 MaterialTableStyled 组件时,没有应用样式。

相反,如果我在 StyledComponent 上使用 div:

import styled from 'styled-components'

export const MaterialTableStyled = styled.div`
    /* STYLE FOR FILTER ROW */
    tbody > .MuiTableRow-root:first-child {
        background-color: #F1F3F4 !important;
    }
`

我的自定义样式以这种方式完美工作:

<MaterialTableStyled> // DIV WITH STYLES
    <MaterialTable
        // ALL PROPS AND STUFFS
    />
</MaterialTableStyled>

...问题是:是否可以在不使用 div 更改样式的情况下“覆盖”或更改样式?

最佳答案

组件必须将 className 属性传递给它们的子组件,以便 styled 函数起作用。

快速浏览一下,MaterialTable 不会这样做,因此样式化组件无法将另一个 css 类分配给表格。

与样式函数兼容的组件

const StyledFriendlyComp = ({className}) => <div className={className}>Styles being applied</div>

无法使用样式化函数的组件

const StyledFriendlyComp = () => <div>Styles not working</div>

在这种情况下,您需要用另一个元素(如 div)包装组件。

关于javascript - 样式化组件/React - 外部元素样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499833/

相关文章:

html - <div> 内边距影响 <p> 边距

javascript - 在 React 的 render 方法中设置 CSS 变量是个好习惯吗?

javascript - 当从 div 中删除字符时,光标移动到 contenteditable div 的末尾

c# - 将 JavaScript 日期转换为 .NET 日期的最佳方法

HTML/CSS 图像定位问题

javascript - ReactJS - 改变当前分页数的颜色

reactjs - 如何在没有无限循环的情况下在 useEffect 中使用扩展运算符?

javascript - 更改日期范围选择器中的月份位置

javascript - 如何使用 AJAX 进行正确的 jQuery 用户身份验证

html - Wordpress 中的主题 CSS 选择元素冲突