これは私の反応レンダー関数render:function(){
return (
<div>
<p className="rr">something</p>
<style>
.rr{
color:red;
}
</style>
</div>
)
}
これにより、「JSX:Error:Parse Error:Line 22:Unexpected token:」というエラーが表示されます
ここで何が問題なのですか?完全な通常のCSSを反応コンポーネントに埋め込むことはできますか?
JSXはjavascriptの小さな拡張であり、独自の本格的なテンプレート言語ではありません。あなたはjavascriptのようにそれをするでしょう:
return (<div>
<p className="rr">something</p>
<style>{"\
.rr{\
color:red;\
}\
"}</style>
</div>)
しかし、これを行う理由はまったくありません。
Es6テンプレート文字列で簡単に実行できます(改行が許可されます)。レンダリングメソッドで:
const css = `
.my-element {
background-color: #f00;
}
`
return (
<div class="my-element">
<style>{css}</style>
some content
</div>
)
ユースケースに関しては、デバッグのために使用しているいくつかのチェックボックスを持つdivに対してこれを行っています。後で簡単に削除できるように1つのファイルに含めたいと思います。
インラインスタイルは、コンポーネントJSXテンプレートに直接適用するのが最適です。
return (
<div>
<p style={{color: "red"}}>something</p>
</div>
);
デモ: http://jsfiddle.net/chantastic/69z2wepo/329/
注:JSXは、スタイル属性のHTML構文をサポートしていません
キャメルケースのプロパティ名を使用してプロパティを宣言します。
{ color: "red", backgroundColor: "white" }
ここでさらに読む: http://facebook.github.io/react/tips/inline-styles.html
「クラス」はJavaScriptの予約語です。代わりに「className」を使用してください。
また、HTMLではなくJSXを使用していることを覚えておく必要があります。 jsxがタグを解析するとは思わない。より良い方法は、スタイルを使用してオブジェクトを作成し、それをスタイルとして適用することです(以下を参照)。
var styles = {
color:"red";
}
return (
<div>
<p style={styles}>something</p>
</div>
)
<style>
タグ内の返されたJSXに変数を追加します。
renderPaypalButtonStyle() {
let styleCode = "#braintree-Paypal-button { margin: 0 auto; }"
return (
<style>{ styleCode }</style>
)
}
これは、次のようにバックティック「 `」を使用して行うことができます
return (<div>
<p className="rr">something</p>
<style>{`
.rr{
color:red;
}
`}</style>
</div>)
これは私がやったことです:
render(){
var styleTagStringContent =
".rr {"+
"color:red"+
"}";
return (
<style type="text/css">
{styleTagStringContent}
</style>
);