未捕获的ReferenceError:未定义React

Ani*_*ket 18 reactjs webpack react-dom

嗨,我知道这类问题已被问过很多次,但我无法得到答案.

我正在尝试编写一个React hello world示例.我只有两个文件,一个是app.jsx,另一个是homepage.jsx.我正在使用webpack捆绑文件.

但是当我运行代码时,我得到了 Uncaught ReferenceError: React is not defined

我的homepage.jsx看起来像这样

"use strict";

var React = require('react');

var Home = React.createClass({
    render : function() {
        return (
            <div className="jumbotron">                
                <h1> Hello World</h1> 
            </div>
        );
    }
});

module.exports = Home;
Run Code Online (Sandbox Code Playgroud)

我的app.js看起来像这样

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

var Home = require('./components/homePage');

ReactDOM.render(
  <Home/>,
  document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)

在浏览器中,它会抛出Uncaught ReferenceError: React is not defined第7行,即我需要主页的位置.

但是当我在app.jsx中添加var React = require('react')时它工作正常.

我不明白这一点.我在homepage.jsx中包含了反应,我正在使用它.在app.jsx我只需要react-dom因为我不使用React.那么为什么它在app.jsx中给出错误.

请帮助!!

And*_*yco 41

改变你app.js的想法

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

var Home = require('./components/homePage');

ReactDOM.render(
    <Home/>,
    document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)

JSX转换为React.createElement()调用,因此范围内需要React.所以,是的,你正在使用Reactapp.js.习惯使用JSX或直接React.*调用时习惯导入它.


MiF*_*MiF 9

您可以在代码中使用它而不需要它.

添加到webpack.config.js:

plugins: [
  new webpack.ProvidePlugin({
    "React": "react",
  }),
],
Run Code Online (Sandbox Code Playgroud)

http://webpack.github.io/docs/shimming-modules.html#plugin-provideplugin