React.createClass 不是函数,可能是 webpack 编译错误

拉克菲特

我使用 webpack 设置反应环境,并使用以下行运行代码:

webpack -d && webpack-dev-server --content-base src/ --inline --hot --port 1234

cmd 运行一些构建,然后显示以下行:

webpack: Compiled successfully.

代替 :

webpack: bundle is now VALID

就像我在示例中看到的那样。

然后它在浏览器控制台上说:

Uncaught TypeError: React.createClass is not a function

会是什么呢?

我的依赖:

"dependencies": {
    "react": "^16.0.0",
    "react-dom": "^16.0.0"
 },
 "devDependencies": {
   "babel-core": "^6.26.0",
   "babel-loader": "^7.1.2",
   "babel-preset-es2015": "^6.24.1",
   "babel-preset-react": "^6.24.1",
   "webpack": "^3.8.1",
   "webpack-dev-server": "^2.9.4"
 }

我的代码:

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

// Create component
var TodoComponent = React.createClass({
  render: function () {
    return(
      <h1>Hello!!</h1>
    );
  }
});

// put component into html page

ReactDOM.render(<TodoComponent />, document.getElementById('todo-container'));

顺便说一句,这是我在这里的第一个问题,所以请原谅我的初学者错误..;)

戴文·特赖恩

在 React 16.x 版本中,React.createClass已移至其自己的名为create-react-class.

文档在这里:https : //reactjs.org/blog/2017/09/26/react-v16.0.html#packaging

所以,你应该这样做npm i create-react-class --save

然后调整你的代码:

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

// Create component
var TodoComponent = createClass({
  render: function () {
    return(
      <h1>Hello!!</h1>
    );
  }
});

// put component into html page

ReactDOM.render(<TodoComponent />, document.getElementById('todo-container'));

否则,你应该使用 ES6class组件,它在 React中更惯用:

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

// Create component
class TodoComponent extends React.Component {
    render() {
        return(
            <h1>Hello!!</h1>
        );
    }
}

// put component into html page

ReactDOM.render(<TodoComponent />, document.getElementById('todo-container'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章