2016-03-09 20 views
4

我使用broswerify翻譯我的JSX代碼。但是,我怎樣才能插入Django模板變量來反應代碼後,它已被轉換爲JavaScript?例如:如何使用Django模板ReactJS

在我的Django views.py:

def index(request): 
    return render(request, 'index.html', {"hello":"hello"}) 

在component.jsx

var React = require('react') 
var ReactDOM = require('react-dom'); 

var Component = React.createClass({ 
    render: function(){ 
     return (
      <div>{this.props.content}</div> 
     ); 
    }, 
}); 

然後使用browserify -t [ babelify --presets [ react ] ] component.jsx -o bundle.jscomponent.jsx轉換爲bundle.js

index.html中:

<html> 
... 
<body> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react-dom.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> 

    <div id="container"></div> 
    <script src="bundle.js"></script> 
    <script type="text/babel"> 
     ReactDOM.render(
     <Component content={{hello}} />, 
     document.getElementById('container') 
    ); 
    </script> 
</body> 

<html> 

的問題是,index.html中,瀏覽器抱怨<Component>未定義因爲browserify已JSX轉化爲原始的JavaScript代碼。

回答

0

你應該移動'ReactDOM.render「」的事情到seaparate'index.jsx'文件或任何入口點爲您的反應程序是。 '{{hello}}''變量應放在窗口對象上,以便可以通過反應組件訪問