var React = require('react');
module.exports=React.createClass({
render:function(){
return(
<div>
<h1> the list </h1>
</div>
)}
})
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我收到以下错误:
app.js:4 Uncaught TypeError: React.createClass is not a function
Run Code Online (Sandbox Code Playgroud)
这是因为版本差异还是拼写错误?
package.json-I have included create-react-class as seen here but not in the bower.json file
{
"dependencies": {
"browser-sync": "^2.18.13",
"browserify": "^14.4.0",
"create-react-class": "^15.6.2",
"ejs": "^2.5.7",
"express": "^4.16.0",
"gulp": "^3.9.1",
"gulp-live-server": "0.0.31",
"react": "^16.0.0",
"reactify": "^1.1.1",
"vinyl-source-stream": "^1.1.0"
}
}
Run Code Online (Sandbox Code Playgroud)
gulpfile.js -Am我在这个文件中遗漏了一些依赖项
var gulp= require('gulp');
var LiveServer= require('gulp-live-server');
var browserSync=require('browser-sync');
var browserify = require('browserify');
var reactify= require('reactify');
var source = require('vinyl-source-stream');
gulp.task('live-server', function(){
var server= new LiveServer('server/main.js');
server.start();
})
gulp.task('bundle',function(){
return browserify({
entries:'app/main.jsx',
debug:true,
})
.transform(reactify)
.bundle()
.pipe(source('app.js'))
.pipe(gulp.dest('./.tmp'))
})
gulp.task('serve',['bundle','live-server'],function(){
browserSync.init(null,{
proxy: "http://localhost:7777",
port:9001
})
})
Run Code Online (Sandbox Code Playgroud)
我的main.jsx有以下内容
var React = require('react');
var createReactClass = require('create-react-class');
var GroceryItemList=require('./components/GroceryItemsList.jsx');
React.render(<GroceryItemList/>,app);
Run Code Online (Sandbox Code Playgroud)
groceryitems.jsx有以下内容
var React = require('react');
var createReactClass = require('create-react-class');
module.exports=React.createReactClass({
render:function(){
return(
<div>
<h1> Grocery Listify </h1>
</div>
)
}
})
Run Code Online (Sandbox Code Playgroud)
当我添加createReactClass时,我得到一个错误:createReactClass不是一个函数,当我添加import和ES6语法时,我得到'非法导入减速'谢谢,
纳文
Shu*_*tri 54
这肯定是一个版本问题,如果你刚刚开始,我建议你创建一个React component扩展React.Component而不是使用,React.createClass因为它从版本16.0开始被弃用,并且已被移动到一个单独的包,'create-react-class'因为@Dream_Cap也提到
还要使用ES6语法进行导入.您可以将代码修改为
import React from 'react';
export default class App extends React.Component {
render(){
return(
<div>
<h1> the list </h1>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
Dre*_*Cap 52
根据文档,您需要获取npm create react类包.从项目文件路径的命令行,您需要执行npm install create-react-class --save,然后修改如下代码:
var React = require('react');
//You need this npm package to do createReactClass
var createReactClass = require('create-react-class');
module.exports=createReactClass({
render:function(){
return(
<div>
<h1> the list </h1>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
您还需要React DOM来呈现这样的组件:
npm install react react-dom
var ReactDOM = require('react-dom');
ReactDOM.render(<GroceryItemList/>,app);
Run Code Online (Sandbox Code Playgroud)
小智 17
如果您收到一条错误,指出React.creatClass是一个未定义的函数,那是因为较新版本的react不支持.
您可以尝试以下方法:
安装NPM create-react-class包:
npm install create-react-class --save-dev
然后在ReactDom变量下创建一个新变量:
var createReactClass = require('create-react-class');
现在不使用组件的React.createClass()而是使用var createReactClass()
示例:替换此:
var TodoComponent = React.createClass({render:function(){return(
<h1>Helloooo</h1>);}});
有了这个:
var TodoComponent = createReactClass({render:function(){return(
<h1>Helloooo</h1>);}});
| 归档时间: |
|
| 查看次数: |
69232 次 |
| 最近记录: |