From aeb1c41bdee58ef1809239da8900d9206108561c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Sun, 26 Mar 2017 21:33:30 +0200 Subject: [PATCH] treat functions with a view() method as POJO, not closure component --- render/render.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/render/render.js b/render/render.js index a048c460..835c2f5f 100644 --- a/render/render.js +++ b/render/render.js @@ -103,18 +103,17 @@ module.exports = function($window) { } function initComponent(vnode, hooks) { var sentinel - if (typeof vnode.tag === "function") { + if (typeof vnode.tag.view === "function") { + vnode.state = Object.create(vnode.tag) + sentinel = vnode.state.view + if (sentinel.$$reentrantLock$$ != null) return $emptyFragment + sentinel.$$reentrantLock$$ = true + } else { vnode.state = null sentinel = vnode.tag if (sentinel.$$reentrantLock$$ != null) return $emptyFragment sentinel.$$reentrantLock$$ = true vnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === "function") ? new vnode.tag(vnode) : vnode.tag(vnode) - } else { - // For object literals since `Vnode()` always sets the `state` field. - vnode.state = Object.create(vnode.tag) - sentinel = vnode.state.view - if (sentinel.$$reentrantLock$$ != null) return $emptyFragment - sentinel.$$reentrantLock$$ = true } if (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)