ContainerRender.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  8. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  9. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  10. var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
  11. var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
  12. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  13. var _react = _interopRequireDefault(require("react"));
  14. var _reactDom = _interopRequireDefault(require("react-dom"));
  15. /**
  16. * @deprecated Since we do not need support React15 any more.
  17. * Will remove in next major version.
  18. */
  19. var ContainerRender = exports.default = /*#__PURE__*/function (_React$Component) {
  20. (0, _inherits2.default)(ContainerRender, _React$Component);
  21. var _super = (0, _createSuper2.default)(ContainerRender);
  22. function ContainerRender() {
  23. var _this;
  24. (0, _classCallCheck2.default)(this, ContainerRender);
  25. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  26. args[_key] = arguments[_key];
  27. }
  28. _this = _super.call.apply(_super, [this].concat(args));
  29. (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "removeContainer", function () {
  30. if (_this.container) {
  31. _reactDom.default.unmountComponentAtNode(_this.container);
  32. _this.container.parentNode.removeChild(_this.container);
  33. _this.container = null;
  34. }
  35. });
  36. (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderComponent", function (props, ready) {
  37. var _this$props = _this.props,
  38. visible = _this$props.visible,
  39. getComponent = _this$props.getComponent,
  40. forceRender = _this$props.forceRender,
  41. getContainer = _this$props.getContainer,
  42. parent = _this$props.parent;
  43. if (visible || parent._component || forceRender) {
  44. if (!_this.container) {
  45. _this.container = getContainer();
  46. }
  47. _reactDom.default.unstable_renderSubtreeIntoContainer(parent, getComponent(props), _this.container, function callback() {
  48. if (ready) {
  49. ready.call(this);
  50. }
  51. });
  52. }
  53. });
  54. return _this;
  55. }
  56. (0, _createClass2.default)(ContainerRender, [{
  57. key: "componentDidMount",
  58. value: function componentDidMount() {
  59. if (this.props.autoMount) {
  60. this.renderComponent();
  61. }
  62. }
  63. }, {
  64. key: "componentDidUpdate",
  65. value: function componentDidUpdate() {
  66. if (this.props.autoMount) {
  67. this.renderComponent();
  68. }
  69. }
  70. }, {
  71. key: "componentWillUnmount",
  72. value: function componentWillUnmount() {
  73. if (this.props.autoDestroy) {
  74. this.removeContainer();
  75. }
  76. }
  77. }, {
  78. key: "render",
  79. value: function render() {
  80. return this.props.children({
  81. renderComponent: this.renderComponent,
  82. removeContainer: this.removeContainer
  83. });
  84. }
  85. }]);
  86. return ContainerRender;
  87. }(_react.default.Component);
  88. (0, _defineProperty2.default)(ContainerRender, "defaultProps", {
  89. autoMount: true,
  90. autoDestroy: true,
  91. forceRender: false
  92. });