ytsejam
ytsejam

Reputation: 3439

Uncaught ReferenceError: createReactClass is not defined

I follow a tutorial about ReactJS using watchify and babelify. I use react@16 version and I am aware React.createReactClass is deprecated. I need temporary fix to get rid of Uncaught ReferenceError: createReactClass is not defined error.

I have installed create-react-class package. my package.json is :

{
  "main": "index.js",
  "scripts": {
    "build": "watchify src/app.js  -o public/bundle.js -t [ babelify --presets [ react es2015 ] ]",
    "server": "cd public; live-server --port=1234 --entry-file=index.html"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-react": "^6.24.1",
    "babelify": "^8.0.0",
    "live-server": "^1.2.0",
    "watchify": "^3.9.0"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-3": "^6.24.1",
    "create-react-class": "^15.6.2",
    "react": "16.0.0",
    "react-dom": "16.0.0",
    "react-scripts": "1.0.16"
  }
} 

and my app.js is

const Sidebar =  createReactClass({
  render(){
    let props = this.props;

    return (<div className='sidebar'>
      <h2> All Decks </h2>
      <ul>
      {props.decs.map((deck, i)=> 
        <li key={i}> {deck.name}</li>
      )}
      </ul>
      { props.addingDeck && <input ref='add'/> }
    </div>);
  }
});
ReactDOM.render(<App>
  <Sidebar decks={[ { name: 'Deck 1' }]} addingDeck={false} />
</App>, document.getElementById('root'));

How can I make createReactClass work ? Thanks

edit : I cant import using " var createReactClass = require('create-react-class');" . may be file is not an jsx file.

Upvotes: 1

Views: 2389

Answers (1)

Maxwelll
Maxwelll

Reputation: 2212

For stateful components you want to extend the Component class from React...

import React, {Component} from 'react'
class Sidebar extends Component {
  render(){
    let props = this.props;

    return (<div className='sidebar'>
      <h2> All Decks </h2>
      <ul>
      {props.decs.map((deck, i)=> 
        <li key={i}> {deck.name}</li>
      )}
      </ul>
      { props.addingDeck && <input ref='add'/> }
    </div>);
  }
});
ReactDOM.render(<App>
  <Sidebar decks={[ { name: 'Deck 1' }]} addingDeck={false} />
</App>, document.getElementById('root'));

Upvotes: 1

Related Questions