diff --git a/src/generators/nodes/Spread.ts b/src/generators/nodes/Spread.ts index d07cc40ac8..732a9380ad 100644 --- a/src/generators/nodes/Spread.ts +++ b/src/generators/nodes/Spread.ts @@ -62,15 +62,19 @@ export default class Spread { const changes = block.getUniqueName(`${node.var}_spread_changes`); + const hasNamedAttributes = node.attributes.length; const namedAttributes = block.getUniqueName(`${node.var}_attributes`); - block.builders.init.addBlock(deindent` - var ${namedAttributes} = [${node.attributes.map(attr => `'${attr.name}'`).join(', ')}]; - `) + + if (hasNamedAttributes) { + block.builders.init.addBlock(deindent` + var ${namedAttributes} = [${node.attributes.map(attr => `'${attr.name}'`).join(', ')}]; + `) + } block.builders.hydrate.addBlock(deindent` var ${changes} = ${init}; for (var key in ${changes}) { - if (${namedAttributes}.indexOf(key) !== -1) continue; + ${hasNamedAttributes ? `if (${namedAttributes}.indexOf(key) !== -1) continue;` : ''} @setAttribute(${node.var}, key, ${changes}[key]); ${activeKeys}[key] = true; @@ -97,7 +101,7 @@ export default class Spread { var ${changes} = ${shouldCache ? last : value}; for (var key in ${changes}) { - if (${namedAttributes}.indexOf(key) !== -1) continue; + ${hasNamedAttributes ? `if (${namedAttributes}.indexOf(key) !== -1) continue;` : ''} @setAttribute(${node.var}, key, ${changes}[key]); @@ -120,6 +124,7 @@ export default class Spread { renderForComponent(block: Block, updates: string[]) { const node = this.parent; + const { expression } = this; const { indexes } = block.contextualise(expression); const { dependencies, snippet } = this.metadata; @@ -145,10 +150,14 @@ export default class Spread { const changes = block.getUniqueName(`${node.var}_spread_changes`); + const hasNamedAttributes = node.attributes.length; const namedAttributes = block.getUniqueName(`${node.var}_attributes`); - block.builders.init.addBlock(deindent` - var ${namedAttributes} = [${node.attributes.map(attr => `'${attr.name}'`).join(', ')}]; - `) + + if (hasNamedAttributes) { + block.builders.init.addBlock(deindent` + var ${namedAttributes} = [${node.attributes.map(attr => `'${attr.name}'`).join(', ')}]; + `) + } if (dependencies.length || hasChangeableIndex) { const changedCheck = ( @@ -171,7 +180,7 @@ export default class Spread { var ${changes} = ${shouldCache ? last : value}; for (var key in ${changes}) { - if (${namedAttributes}.indexOf(key) !== -1) continue; + ${hasNamedAttributes ? `if (${namedAttributes}.indexOf(key) !== -1) continue;` : ''} ${node.var}_changes[key] = ${changes}[key];