shineout
Version:
Shein 前端组件库
63 lines (46 loc) • 1.88 kB
JavaScript
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import React from 'react';
function create(name) {
var _temp;
var Base = React[name];
return _temp =
/*#__PURE__*/
function (_Base) {
_inheritsLoose(_temp, _Base);
function _temp() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _Base.call.apply(_Base, [this].concat(args)) || this;
_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "$isMounted", void 0);
_defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "forceUpdateTimer", void 0);
return _this;
}
var _proto = _temp.prototype;
_proto.componentDidMount = function componentDidMount() {
this.$isMounted = true;
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.$isMounted = false;
};
_proto.setState = function setState() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
if (this.$isMounted !== false) _Base.prototype.setState.apply(this, args);
};
_proto.forceUpdate = function forceUpdate() {
if (this.$isMounted === true) _Base.prototype.forceUpdate.call(this);
if (this.$isMounted === undefined) {
if (this.forceUpdateTimer) clearTimeout(this.forceUpdateTimer);
this.forceUpdateTimer = setTimeout(this.forceUpdate.bind(this));
}
};
return _temp;
}(Base), _temp;
}
export var Component = create('Component');
export var PureComponent = create('PureComponent');