diff --git a/packages/marko/src/runtime/components/Component.js b/packages/marko/src/runtime/components/Component.js index 01d56a190a..b83f80ef87 100644 --- a/packages/marko/src/runtime/components/Component.js +++ b/packages/marko/src/runtime/components/Component.js @@ -150,9 +150,9 @@ function checkInputChanged(existingComponent, oldInput, newInput) { return true; } - for (var i = 0; i < len; i++) { + for (var i = len; i--; ) { var key = oldKeys[i]; - if (oldInput[key] !== newInput[key]) { + if (!(key in newInput && oldInput[key] === newInput[key])) { return true; } } diff --git a/packages/marko/src/runtime/components/ComponentDef.js b/packages/marko/src/runtime/components/ComponentDef.js index f528dbc8f8..d2b63aeba0 100644 --- a/packages/marko/src/runtime/components/ComponentDef.js +++ b/packages/marko/src/runtime/components/ComponentDef.js @@ -1,16 +1,16 @@ "use strict"; var complain = "MARKO_DEBUG" && require("complain"); +var w10Noop = require("warp10/constants").NOOP; var componentUtil = require("./util"); var attachBubblingEvent = componentUtil.___attachBubblingEvent; var addDelegatedEventHandler = require("./event-delegation") .___addDelegatedEventHandler; var extend = require("raptor-util/extend"); var KeySequence = require("./KeySequence"); +var EMPTY_OBJECT = {}; var FLAG_WILL_RERENDER_IN_BROWSER = 1; -// var FLAG_HAS_BODY_EL = 2; -// var FLAG_HAS_HEAD_EL = 4; -var FLAG_OLD_HYDRATE_NO_CREATE = 8; +var FLAG_HAS_RENDER_BODY = 2; /** * A ComponentDef is used to hold the metadata collected at runtime for @@ -90,11 +90,12 @@ ComponentDef.___deserialize = function(o, types, global, registry) { var id = o[0]; var typeName = types[o[1]]; var input = o[2] || null; - var extra = o[3]; + var extra = o[3] || EMPTY_OBJECT; var state = extra.s; var componentProps = extra.w; var flags = extra.f; + var renderBody = flags & FLAG_HAS_RENDER_BODY ? w10Noop : extra.r; var component = registry.___createComponent(typeName, id); @@ -102,10 +103,11 @@ ComponentDef.___deserialize = function(o, types, global, registry) { // just building it from the server info component.___updateQueued = true; - if ( - flags & FLAG_WILL_RERENDER_IN_BROWSER && - !(flags & FLAG_OLD_HYDRATE_NO_CREATE) - ) { + if (renderBody) { + input.renderBody = renderBody; + } + + if (flags & FLAG_WILL_RERENDER_IN_BROWSER) { if (component.onCreate) { component.onCreate(input, { global: global }); } @@ -147,7 +149,6 @@ ComponentDef.___deserialize = function(o, types, global, registry) { return { id: id, ___component: component, - ___boundary: extra.r, ___domEvents: extra.d, ___flags: extra.f || 0 }; diff --git a/packages/marko/src/runtime/components/beginComponent.js b/packages/marko/src/runtime/components/beginComponent.js index 5f58f87a9c..ed5ef0fedb 100644 --- a/packages/marko/src/runtime/components/beginComponent.js +++ b/packages/marko/src/runtime/components/beginComponent.js @@ -3,9 +3,7 @@ const ComponentDef = require("./ComponentDef"); var FLAG_WILL_RERENDER_IN_BROWSER = 1; -// var FLAG_HAS_BODY_EL = 2; -// var FLAG_HAS_HEAD_EL = 4; -var FLAG_OLD_HYDRATE_NO_CREATE = 8; +// var FLAG_HAS_RENDER_BODY = 2; module.exports = function beginComponent( componentsContext, @@ -54,10 +52,6 @@ module.exports = function beginComponent( componentsContext.___isPreserved = false; } - if (out.global.oldHydrateNoCreate === true) { - componentDef.___flags |= FLAG_OLD_HYDRATE_NO_CREATE; - } - if ((ownerIsRenderBoundary || ownerWillRerender) && key != null) { out.w( "

foo1

bar1

bar2

foo-split1

split-child1

split-child2

foo-split2

split-child1

split-child2

foo2

bar1

bar2

foo-split1

split-child1

split-child2

foo-split2

split-child1

split-child2

split1

split-child1

split-child2

split2

split-child1

split-child2

\ No newline at end of file +Components

foo1

bar1

bar2

foo-split1

split-child1

split-child2

foo-split2

split-child1

split-child2

foo2

bar1

bar2

foo-split1

split-child1

split-child2

foo-split2

split-child1

split-child2

split1

split-child1

split-child2

split2

split-child1

split-child2

\ No newline at end of file