2017-09-18 18 views
2

styled-componentでPrimeReactコンポーネントをスタイルすることはできません。PrimeReactとstyled-component

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; 
    } 
`; 

答えて

1

styled-componentsは、コンポーネントに渡されるべきclassNameを生成します。 InputTextclassNameを受け入れない場合は

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; 
    } 
`; 

、あなたは、単に別のコンポーネントでそれをラップすることができます:

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; 
    } 
`; 
1

グローバルクラススタイルをオーバーライドしようとしています。コンポーネントのスタイルをstyled-componentと変更するには、must accept className propertyを使用します。 InputTextclassName小道具を受け入れた場合、あなたはそれでのスタイルを試すことができます。

const StyledInputText = styled(InputText)` 
    width: 1000px; 
`; 

とあなたのコンポーネントで:

class Component extends React.Component { 
    renderValueDateAndAmount() { 
     return (
      <StyledInputText /> 
     ) 
} 
関連する問題