From 9f19121b6573352ed1c39712252e40064c1233ba Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 17 Sep 2017 12:21:26 -0400 Subject: [PATCH] remove isInitial check on recompute --- src/generators/dom/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/generators/dom/index.ts b/src/generators/dom/index.ts index 8d82fef182..f2ef1d32bf 100644 --- a/src/generators/dom/index.ts +++ b/src/generators/dom/index.ts @@ -77,9 +77,14 @@ export default function dom( const builder = new CodeBuilder(); const computationBuilder = new CodeBuilder(); + const computationDeps = new Set(); if (computations.length) { computations.forEach(({ key, deps }) => { + deps.forEach(dep => { + computationDeps.add(dep); + }); + if (generator.readonly.has(key)) { // <:Window> bindings throw new Error( @@ -89,7 +94,7 @@ export default function dom( generator.readonly.add(key); - const condition = `isInitial || ${deps.map(dep => `changed.${dep}`).join(' || ')}`; + const condition = `${deps.map(dep => `changed.${dep}`).join(' || ')}`; const statement = `if (@differs((state.${key} = @template.computed.${key}(${deps .map(dep => `state.${dep}`) @@ -159,7 +164,7 @@ export default function dom( ? `@assign(@template.data(), options.data)` : `options.data || {}`}; ${generator.metaBindings} - ${computations.length && `this._recompute({}, this._state, {}, true);`} + ${computations.length && `this._recompute({ ${Array.from(computationDeps).map(dep => `${dep}: 1`).join(', ')} }, this._state, {});`} ${options.dev && Array.from(generator.expectedProperties).map( prop => @@ -306,7 +311,7 @@ export default function dom( `} ${computations.length ? deindent` - ${name}.prototype._recompute = function _recompute(changed, state, oldState, isInitial) { + ${name}.prototype._recompute = function _recompute(changed, state, oldState) { ${computationBuilder} } ` : (!sharedPath && `${name}.prototype._recompute = @noop;`)}