diff --git a/packages/metal-component/src/Component.js b/packages/metal-component/src/Component.js index 072fa475..b4e39742 100644 --- a/packages/metal-component/src/Component.js +++ b/packages/metal-component/src/Component.js @@ -438,11 +438,6 @@ class Component extends EventEmitter { element = opt_configOrElement; } const instance = new Ctor(config, false); - - if (window.__METAL_DEV_TOOLS_HOOK__) { - window.__METAL_DEV_TOOLS_HOOK__(instance); - } - instance.renderComponent(element); return instance; } @@ -457,6 +452,9 @@ class Component extends EventEmitter { */ renderComponent(opt_parentElement) { if (!this.hasRendererRendered_) { + if (window.__METAL_DEV_TOOLS_HOOK__) { + window.__METAL_DEV_TOOLS_HOOK__(this); + } this.getRenderer().render(this); } this.emit('render'); diff --git a/packages/metal-component/test/Component.js b/packages/metal-component/test/Component.js index 9b8f10b0..e2c790a3 100644 --- a/packages/metal-component/test/Component.js +++ b/packages/metal-component/test/Component.js @@ -940,7 +940,7 @@ describe('Component', function() { assert.ok(!Component.isComponentCtor(fn.bind(this))); }); - it('should pass instance of component to __METAL_DEV_TOOLS_HOOK__ in Component.render', function() { + it('should pass instance of component to __METAL_DEV_TOOLS_HOOK__ on first render', function() { var hookStub = sinon.stub(); window.__METAL_DEV_TOOLS_HOOK__ = hookStub; class CustomComponent extends Component { @@ -957,6 +957,11 @@ describe('Component', function() { assert.ok(comp.element); sinon.assert.callCount(hookStub, 1); sinon.assert.calledWith(hookStub, comp); + + comp.visible = false; + + sinon.assert.callCount(hookStub, 1); + sinon.assert.calledWith(hookStub, comp); }); function createCustomComponentClass(opt_rendererContentOrFn) {