2015-12-09 44 views
5

我有commentBox.jsx文件,用下面的代碼:陣營沒有定義的類(文/巴別塔)

var CommentBox = React.createClass({ 
    render: function() { 
    return (
     <div className="commentBox"> 
     <h1>Comments</h1> 
     </div> 
    ); 
    } 
}); 

index.html中,我想使這個組件:

<div id="content"></div> 
<script type="text/babel" src="scripts/commentBox.jsx"></script> 

<script type="text/babel"> 
    ReactDOM.render(<CommentBox />, document.getElementById('content')); 
</script> 

但我收到錯誤:「CommentBox未定義」;爲什麼這不起作用? 如果我將所有的代碼放入一個文件(commentBox.js) - 它會工作。

回答

3

你需要在自己的腳本塊申報var CommentBox;其他兩個以上。您的變量範圍不會在您的腳本導入之間共享。

<div id="content"></div> 
 
<script> 
 
    var CommentBox; 
 
</script> 
 
<script type="text/babel" src="scripts/commentBox.jsx"></script> 
 
<script type="text/babel"> 
 
    ReactDOM.render(<CommentBox />, document.getElementById('content')); 
 
</script>

您也可以從你的jsx文件中刪除var

+0

這對我有用。請務必使用'

0

CommentBox沒有聲明。如果你想這樣,那麼你的代碼應該是這樣的:

<script type="text/babel"> 
var CommentBox = React.createClass({ 
    render: function() { 
    return (
    <div className="commentBox"> 
      <h1>Comments</h1> 
    </div> 
    ); 
    } 
}); 

ReactDOM.render(<CommentBox />, document.getElementById('content')); 

</script> 
+0

你可以在這段代碼中對ReactDom對象說些什麼?它沒有被宣佈嗎? –

+0

ReactDom是用於將組件呈現給DOM的庫,應該將其導入到代碼中,但組件本身(如CommentBox)也未定義。 – vistajess

+0

這是錯誤的答案))我在ReactDOM.render的調用之前添加了CommentBox。它必須存在於窗口對象的全局範圍內 –

相關問題