TypeError: react__WEBPACK_IMPORTED_MODULE_0___default.a.createClass is not a function
에러가 발생된 자바스크립트 코드:
const Panel = React.createClass({ render(){ return <div>{this.props.children}</div> } });
수정된 코드:
var createReactClass = require('create-react-class'); const Panel = createReactClass({ render(){ return <div>{this.props.children}</div> } });
리액트가 처음 배포되었을 때 JavaScript로 클래스를 생성하는 관용적 방법이 없었으므로 자체적으로 리액트에서는 React.createClass 함수를 제공해주었다.
하지만 추후에 ES2015의 일부로 JavaScript 언어에 클래스가 추가됨에 따라 클래스를 사용하여 리액트 컴포넌트를 만드는 기능이 추가되었다고 한다. 그와 함께 함수 컴포넌트와 함께 JavaScript 클래스가 리액트에서 컴포넌트를 작성하는 방법 중 하나로 쓰인다.
그리고 create-react-class를 사용하려면 따로 모듈 설치가 필요하니 ‘npm install create-react-class’ 명령을 통해 설치하도록 하자.
npm install create-react-class npm WARN react-scripts@3.3.0 requires a peer of typescript@^3.2.1 but none is installed. You must install peer dependencies yourself. npm WARN sass-loader@8.0.0 requires a peer of node-sass@^4.0.0 but none is installed. You must install peer dependencies yourself. npm WARN sass-loader@8.0.0 requires a peer of sass@^1.3.0 but none is installed. You must install peer dependencies yourself. npm WARN sass-loader@8.0.0 requires a peer of fibers@>= 3.1.0 but none is installed. You must install peer dependencies yourself. npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules\chokidar\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules\jest-haste-map\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) + create-react-class@15.6.3 added 8 packages from 83 contributors and audited 906429 packages in 25.232s found 0 vulnerabilities