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