2017-01-19 12 views
1

私はFlask + React + Bootstrapを使用している新しいプロジェクトを開始していますが、何らかの理由でJSX内のBootstrapが機能しません。React working with Bootstrap

gulp-reactを使用してJSXをJSに変換しています。ここで

はJSX(ブートストラップウェブサイトから文字通り一例)である。

var Example = React.createClass({ 
    render:() => { 
    return (
     <div class="input-group"> 
     <span class="input-group-addon" id="basic-addon1">@</span> 
     <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1" /> 
     </div> 
    )} 
}); 

ReactDOM.render(
    <Example />, 
    document.getElementById('main') 
); 

と変換JS:

var Example = React.createClass({displayName: "Example", 
    render: function() { 
    return (
     React.createElement("div", {class: "input-group"}, 
     React.createElement("span", {class: "input-group-addon", id: "basic-addon1"}, "@"), 
     React.createElement("input", {type: "text", class: "form-control", placeholder: "Username", "aria-describedby": "basic-addon1"}) 
    ) 
    )} 
}); 

ReactDOM.render(
    React.createElement(Example, null), 
    document.getElementById('main') 
); 

私はコピーしてHTMLテンプレートにHTMLを貼り付けると、すべてが表示されます予想通り。 Example.renderを単純な0​​に置き換えると、それはうまく描画されます。

何が問題なのですか?

+0

[要素にクラスを描画しないで反応させる]の複製があります(http://stackoverflow.com/questions/39442184/react-not-rendering-classes-on-elements) – Li357

+0

classNameの代わりにクラスを使用しています。 –

答えて

3

私たちはJSXを書くと、まだJavaScriptで書かれていますが、いくつかの構文が異なります。 JavaScriptでは 'class'はキーワードであり、実際に定義しようとしない限り 'class'を使用できません。だから、この問題を回避するために、あなたのような「className」の持つ「クラス」を交換することがあります。しかし、あなたがが「className」を使用することはありません、あなたの.htmlファイルに

var Example = React.createClass({ 
    render:() => { 
    return (
     <div className="input-group"> 
     <span className="input-group-addon" id="basic-addon1">@</span> 
     <input type="text" className="form-control" placeholder="Username" aria-describedby="basic-addon1" /> 
     </div> 
    )} 
}); 

ReactDOM.render(
    <Example />, 
    document.getElementById('main') 
); 

を、それだけで "だろうあなたが元々やっているように、クラス "を作成しました。

+0

応答していただきありがとうございますが、なんらかの理由で問題が解決されませんでした。それでもレンダリングはありません。 – user3642365

+0

また、ブートストラップスタイルシート(コンテンツ配布ネットワーク(CDN)またはファイルシステムのコピーから)をHTMLに含めてください。私はまた、 'class'の最初のインスタンスを 'className'に変更するのを忘れていました。だから、あなたが私のコードをコピーして貼り付けると、それはあなたに影響を及ぼしていたでしょう – bwalshy

+0

あなたのhtmlの 'document'にidが' main'の要素が含まれていますか? – jakee