fix contextual component bindings

pull/1367/head
Rich Harris 7 years ago
parent 1120c135ac
commit 242d64d4cf

@ -243,15 +243,19 @@ export default class Component extends Node {
let setFromChild;
if (block.contexts.has(key)) {
if (block.contexts.has(key)) { // TODO remove block.contexts
const computed = isComputed(binding.value.node);
const tail = binding.value.node.type === 'MemberExpression' ? getTailSnippet(binding.value.node) : '';
const list = block.listNames.get(key);
const index = block.indexNames.get(key);
const lhs = binding.value.node.type === 'MemberExpression'
? binding.value.snippet
: `ctx.${list}[ctx.${index}]${tail} = childState.${binding.name}`;
setFromChild = deindent`
${list}[${index}]${tail} = childState.${binding.name};
${lhs} = childState.${binding.name};
${[...binding.value.dependencies]
.map((name: string) => {
@ -307,8 +311,9 @@ export default class Component extends Node {
`);
});
block.maintainContext = true; // TODO put this somewhere more logical
const initialisers = [
'ctx = #component.get()',
hasLocalBindings && 'newState = {}',
hasStoreBindings && 'newStoreState = {}',
].filter(Boolean).join(', ');

Loading…
Cancel
Save