2016-04-27 33 views
0

我遇到了使用ReactJS下划线的问题。当我运行我ReactJS类我得到以下错误:与ReactJS一起使用下划线

Uncaught ReferenceError: _ is not defined

的index.html

<html> 
    <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=9"> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <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/jquery/2.2.0/jquery.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>  
    </head> 
    <body> 
    <div id="content"></div> 
    <script type="text/babel" src="scripts/main.js"></script> 
    </body> 
</html> 

main.js

var MyBox = React.createClass({ 
    render: function(){ 
     console.log(_.difference([1,2,3], [2,4,6,7])); 
    } 
}); 

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

的错误是非常明显的,它根本不明白什么是_符号。我的问题是,即使我已经在index.html文件中导入了下划线库,为什么仍然会出现此错误?是否有可能在ReactJS中使用下划线?我认为它应该工作,因为jQuery也在那里工作,我不必为了使用它而定义jQuery的$。我只是简单地导入了jQuery库,它立即工作。

所有帮助表示赞赏。

+1

你试图'要求(“_”)'? –

+0

@不幸的是,由于项目限制,我不能使用require()。否则,这肯定会奏效。即使我可以使用它,我得到以下错误消息'未捕获的ReferenceError:需求未定义' –

+0

我不知道React,但也许你错过了_browser.min.js_? – Max

回答

1

我的猜测是你的main.js在加载Underscore之前被执行。

尝试移动下划线包括你的脚本列表的顶部:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
<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/jquery/2.2.0/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script> 
+0

非常感谢。这实际上解决了这个问题。它似乎不得不在'react.js'和'react-dom.js'库之前加载。我想知道为什么,因为jQuery通常使用'$'工作。谢谢您的回答 :) –