mirror of
https://github.com/sveltejs/svelte.git
synced 2024-11-29 08:32:05 +01:00
Merge pull request #2064 from sveltejs/gh-2054
prevent duplicated reactive declarations
This commit is contained in:
commit
cf775486cf
@ -1057,6 +1057,10 @@ export default class Component {
|
||||
});
|
||||
}
|
||||
|
||||
if (this.reactive_declarations.indexOf(declaration) !== -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
seen.add(declaration);
|
||||
|
||||
if (declaration.dependencies.size === 0) {
|
||||
@ -1070,9 +1074,7 @@ export default class Component {
|
||||
if (declaration.assignees.has(name)) return;
|
||||
const earlier_declarations = lookup.get(name);
|
||||
if (earlier_declarations) earlier_declarations.forEach(declaration => {
|
||||
if (this.reactive_declarations.indexOf(declaration) === -1) {
|
||||
add_declaration(declaration);
|
||||
}
|
||||
add_declaration(declaration);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -0,0 +1,53 @@
|
||||
/* generated by Svelte vX.Y.Z */
|
||||
import { SvelteComponent as SvelteComponent_1, flush, init, noop, safe_not_equal } from "svelte/internal";
|
||||
|
||||
function create_fragment(ctx) {
|
||||
return {
|
||||
c: noop,
|
||||
m: noop,
|
||||
p: noop,
|
||||
i: noop,
|
||||
o: noop,
|
||||
d: noop
|
||||
};
|
||||
}
|
||||
|
||||
function instance($$self, $$props, $$invalidate) {
|
||||
let { x } = $$props;
|
||||
|
||||
let a;
|
||||
let b;
|
||||
|
||||
$$self.$set = $$props => {
|
||||
if ('x' in $$props) $$invalidate('x', x = $$props.x);
|
||||
};
|
||||
|
||||
$$self.$$.update = ($$dirty = { b: 1, x: 1, a: 1 }) => {
|
||||
if ($$dirty.b || $$dirty.x) {
|
||||
b = x; $$invalidate('b', b);
|
||||
}
|
||||
if ($$dirty.a || $$dirty.b) {
|
||||
a = b; $$invalidate('a', a);
|
||||
}
|
||||
};
|
||||
|
||||
return { x };
|
||||
}
|
||||
|
||||
class SvelteComponent extends SvelteComponent_1 {
|
||||
constructor(options) {
|
||||
super();
|
||||
init(this, options, instance, create_fragment, safe_not_equal);
|
||||
}
|
||||
|
||||
get x() {
|
||||
return this.$$.ctx.x;
|
||||
}
|
||||
|
||||
set x(x) {
|
||||
this.$set({ x });
|
||||
flush();
|
||||
}
|
||||
}
|
||||
|
||||
export default SvelteComponent;
|
@ -0,0 +1,9 @@
|
||||
<script>
|
||||
export let x;
|
||||
|
||||
let a;
|
||||
let b;
|
||||
|
||||
$: a = b;
|
||||
$: b = x;
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user