2017-09-21 15 views
2

スタイリングされたコンポーネントでコンテンツの前に擬似をレンダリングする手間があります。スタイル前のコンポーネントでコンテンツの前に擬似を動的にレンダリングする方法

何か間違っていますか?

静的にコンテンツの前に擬似をレンダリングしても問題はありませんが、動的に試しても機能しません。

は、コンポーネント

const Test = (props) => { 

    return (
     <Text before={12345}> 
      {props.children} 
     </Text> 
    ); 

}; 

スタイル付きコンポーネント(機能しない)

const Text = styled.span` 

    &:before { 
     content: ${props => { 
      console.log(props.before); // I see '12345' in log. 
      return props.before; 
      } 
    } 


`; 

スタイル付きのコンポーネント(これは正常に動作します)

const Text = styled.span` 

    &:before { 
     content: '12345' 
    } 


`; 

答えて

3

から取ら

リファレンス作業CSSが

である "私は"
const Block = styled.div` 
    &:before { 
     display: absolute; 
     top:0; 
     content: '${props => props.before}' 
    } 
` 

私はES6 new featuresを利用していますが、ここでは単一の文func中括弧{}returnを使用する必要はありません。

Codepen:https://codepen.io/metju/pen/zEKeOm

+0

:{ コンテンツの前にあ、ありがとうございます!! – hytm

0

スタイル・コンポーネントは、SASSと同じ働きに反応します何も違う

const Text = styled.span` 
    &:before { 
     content: ${props => !!props.before ? props.before : " "}; 
    } 

`;

私は//のレンダリング午前:content値はここで引用符

以内でなければならないためである Before and After pseudo classes used with styled-components

+0

私は '' '!! props.before'''を使用している、これはブール値に文字列を変換しtruthy文です。 '' props.before'''を取得しているかどうかを確認するだけです。 –

+0

ありがとうございました!しかし、それは動作しません...私もこれを試してみました。 &:{ の前に:$ {props => !! props.before? 'aaa': "bbb"}; } 'AAA' と 'BBB' どちらの "tはレンダリングさdoesnのもちろん – hytm

+0

、私は私の記事で述べたように、私はこのように記述する場合、それが動作します &:。。 '12345' } – hytm

関連する問題