You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import React, { Component } from 'react';
export default class Test extends Component {
render() {
return (
<div>
<Static />
</div>
);
}
}
class Static extends Component {
render() {
return (
<div>static</div>
);
}
}
Description
When running babel with the input code with the babel-plugin-transform-react-constant-elements, the hoisted element is incorrectly placed before the component is actually declared, see output and check where Static is declared and where the element is hoisted:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _ref = _react2.default.createElement(Static, null);
var Test = function (_Component) {
_inherits(Test, _Component);
function Test() {
_classCallCheck(this, Test);
return _possibleConstructorReturn(this, Object.getPrototypeOf(Test).apply(this, arguments));
}
_createClass(Test, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
_ref
);
}
}]);
return Test;
}(_react.Component);
exports.default = Test;
var Static = function (_Component2) {
_inherits(Static, _Component2);
function Static() {
_classCallCheck(this, Static);
return _possibleConstructorReturn(this, Object.getPrototypeOf(Static).apply(this, arguments));
}
_createClass(Static, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
'static'
);
}
}]);
return Static;
}(_react.Component);
The text was updated successfully, but these errors were encountered:
@leoasis Thanks for the report! I'm going to close this as a duplicate of #3915. I left a comment here pointing out that (I believe) the critical issue is fixed (still a separate issue where hoisting isn't happening at all where it should).
Bug information
Options
babelrc:
Input code
Description
When running babel with the input code with the
babel-plugin-transform-react-constant-elements
, the hoisted element is incorrectly placed before the component is actually declared, see output and check whereStatic
is declared and where the element is hoisted:The text was updated successfully, but these errors were encountered: