6

我似乎无法使用 styled-component 设置 PrimeReact 组件的样式。

鉴于下面的代码呈现一个 InputText,我的意图是改变它的宽度。但它不起作用。

import styled from "styled-components";
import {InputText} from 'primereact/components/inputtext/InputText';

class Component extends React.Component {
    render() {
        return (
            <InputText/>
        )
}

const ComponentView = styled(Component)`
    .ui-inputtext {
        width: 1000px;
    }
`;
4

2 回答 2

3

styled-components生成一个className应该传递给组件的。

import styled from "styled-components";
import {InputText} from 'primereact/components/inputtext/InputText';

class Component extends React.Component {
    render() {
        return (
            <InputText className={this.props.className} /> <---- here
        )
}

const ComponentView = styled(Component)`
    .ui-inputtext {
        width: 1000px;
    }
`;

如果InputText不接受className,您可以简单地用另一个组件包装它:

import styled from "styled-components";
import {InputText} from 'primereact/components/inputtext/InputText';

class Component extends React.Component {
    render() {
        return (
            <div className={this.props.className}> <---- here
                <InputText />
            </div>
        )
}

const ComponentView = styled(Component)`
    .ui-inputtext {
        width: 1000px;
    }
`;
于 2017-09-18T13:37:11.647 回答
1

PrimeReact 使用单独的 sass 样式表应用了许多样式,通常结合多个类名和 html 标签。

为了让你的风格获胜,你需要更多的 CSS 特异性。

一种解决方案是使用嵌套选择器,例如:

const ComponentView = styled(Component)`
&&& {
    width: 1000px;
}`

这将生成 3 个相同的类名,并由Styled Components 文档推荐。需要更多的类名特异性?使用更多&s。

或者你可以输入一个!important. 我见过这个。

或者编辑他们的 sass 文件

于 2018-09-07T18:54:03.237 回答