25

嗨,我知道这种类型的问题已经被问过很多次了,但我无法得到答案。

我正在尝试编写一个 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;

我的 app.js 看起来像这样

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

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

ReactDOM.render(
  <Home/>,
  document.getElementById('app')
);

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

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

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

请帮忙!!

4

2 回答 2

42

把你app.js改成这个

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

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

ReactDOM.render(
    <Home/>,
    document.getElementById('app')
);

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

于 2016-02-11T15:02:24.903 回答
14

你可以在你的代码中不需要它。

添加到webpack.config.js

plugins: [
  new webpack.ProvidePlugin({
    "React": "react",
  }),
],

https://webpack.js.org/plugins/provide-plugin/#root

于 2017-01-31T07:24:16.327 回答