2017-02-22 9 views
1

私は属性をマップするカスタムコンポーネントを持っています。 このコンポーネントには、CSSクラスが割り当てられたラベルがあります。 しかし、このラベルにはオプションのインラインスタイルも必要です。 問題は、反応では、中括弧でインラインスタイルを囲む必要があるため、それらをエスケープしたり、コンポーネントで正しく設定することができないということです。これを解決するには?コンポーネントからReactコンポーネントの属性としてCSSインラインスタイル

コード:

item.style = { 
display: 'inline' 
} 
+0

あなたは私たちに多くのコードを表示することができますか? 'item.style'の型は何ですか?それはオブジェクトリテラルでなければなりませんか?マッピングしている場合は 'key'を使います。 – Noctisdark

答えて

1

Virutal DOM Objectのすぐ内側にある場合は、最初に{}を含める必要があります。 <... items={object} .../>とし、オブジェクトは他のものと全く同じ方法で書く必要があります。Object Literalsあなたは

<CustomComponent    
    name="name" 
    items={[{ 
     value: 'value', 
     label: 'label', 
     style: {{display: 'inline'}}  -> not working //use {display: 'inline'} 
    }]} 
/> 

私はCodepenで、このためのペンを作ったに{display: 'inline'}代わりの{{display: 'inline'}}を必要とされていることを、あなたはそれHereを確認することができます。

+1

うん、それは助けてくれてありがとう、働いています:) – user1974566

+0

喜んで使用する。 – Noctisdark

1

あなたのスタイルプロパティ.jsxのレンダリングから

const CustomComponent = ({items, name}) => (
    <fieldset> 
     {items 
      .map((item, index) => ({item, id: `${name || 'dod'}-${item.value || index}`})) 
      .map(({item, id}) => 
       <div key={id} 
        className="className1"> 
        <input 
         id={id} 
         name={name} 
         type="text" 
        /> 
        <label htmlFor={id} className="className" style={item.style}> 
         {item.label} 
        </label> 
       </div> 
      )} 
    </fieldset> 
); 

コードは、オブジェクトリテラルであることをそうのようなものを持っていますJSオブジェクトの形式でスタイルを定義することができます。

style: {{display: 'inline'}} 
1

反応で:

<CustomComponent    
     name="name" 
     items={[{ 
      value: 'value', 
      label: 'label', 
      style: {{display: 'inline'}}  -> not working 
     }]} 
    /> 
0

あなたはこれをさらに抽象化することができますし、あなたのページのすべてのスタイル保持JSファイルしている:

const styles = { 
    myElement: { 
    display: 'inline' 
    } 
} 

は、コードに...

<Component style={styles.myElement} /> 
関連する問題