mirror of https://github.com/sveltejs/svelte
in spread, distinguish never-updating and always-updating props (#4487)
parent
3a37de364b
commit
d802c3b266
@ -0,0 +1,13 @@
|
|||||||
|
<script>
|
||||||
|
export let foo;
|
||||||
|
export let baz;
|
||||||
|
export let qux;
|
||||||
|
export let quux;
|
||||||
|
export let selected;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<p>foo: {foo}</p>
|
||||||
|
<p>baz: {baz} ({typeof baz})</p>
|
||||||
|
<p>qux: {qux}</p>
|
||||||
|
<p>quux: {quux}</p>
|
||||||
|
<p>selected: {selected}</p>
|
@ -0,0 +1,76 @@
|
|||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
list: [{
|
||||||
|
foo: 'lol',
|
||||||
|
baz: 40 + 2,
|
||||||
|
qux: 5,
|
||||||
|
quux: 'core'
|
||||||
|
}, {
|
||||||
|
foo: 'lolzz',
|
||||||
|
baz: 50 + 2,
|
||||||
|
qux: 1,
|
||||||
|
quux: 'quuxx'
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
|
||||||
|
html: `
|
||||||
|
<div>
|
||||||
|
<p>foo: lol</p>
|
||||||
|
<p>baz: 42 (number)</p>
|
||||||
|
<p>qux: 0</p>
|
||||||
|
<p>quux: core</p>
|
||||||
|
<p>selected: true</p>
|
||||||
|
<p>foo: lolzz</p>
|
||||||
|
<p>baz: 52 (number)</p>
|
||||||
|
<p>qux: 0</p>
|
||||||
|
<p>quux: quuxx</p>
|
||||||
|
<p>selected: false</p>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
|
||||||
|
test({ assert, component, target }) {
|
||||||
|
component.list = [{
|
||||||
|
foo: 'lol',
|
||||||
|
baz: 40 + 3,
|
||||||
|
qux: 8,
|
||||||
|
quux: 'heart'
|
||||||
|
}, {
|
||||||
|
foo: 'lolzz',
|
||||||
|
baz: 50 + 3,
|
||||||
|
qux: 8,
|
||||||
|
quux: 'heartxx'
|
||||||
|
}];
|
||||||
|
|
||||||
|
assert.htmlEqual(target.innerHTML, `
|
||||||
|
<div>
|
||||||
|
<p>foo: lol</p>
|
||||||
|
<p>baz: 43 (number)</p>
|
||||||
|
<p>qux: 0</p>
|
||||||
|
<p>quux: heart</p>
|
||||||
|
<p>selected: true</p>
|
||||||
|
<p>foo: lolzz</p>
|
||||||
|
<p>baz: 53 (number)</p>
|
||||||
|
<p>qux: 0</p>
|
||||||
|
<p>quux: heartxx</p>
|
||||||
|
<p>selected: false</p>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
|
||||||
|
component.qux = 1;
|
||||||
|
|
||||||
|
assert.htmlEqual(target.innerHTML, `
|
||||||
|
<div>
|
||||||
|
<p>foo: lol</p>
|
||||||
|
<p>baz: 43 (number)</p>
|
||||||
|
<p>qux: 1</p>
|
||||||
|
<p>quux: heart</p>
|
||||||
|
<p>selected: false</p>
|
||||||
|
<p>foo: lolzz</p>
|
||||||
|
<p>baz: 53 (number)</p>
|
||||||
|
<p>qux: 1</p>
|
||||||
|
<p>quux: heartxx</p>
|
||||||
|
<p>selected: true</p>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,12 @@
|
|||||||
|
<script>
|
||||||
|
import Widget from './Widget.svelte';
|
||||||
|
|
||||||
|
export let list;
|
||||||
|
export let qux = 0;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{#each list as item, index (item.foo)}
|
||||||
|
<Widget {...item} qux={qux} selected={qux === index} />
|
||||||
|
{/each}
|
||||||
|
</div>
|
Loading…
Reference in new issue