mirror of https://github.com/sveltejs/svelte
				
				
				
			
							parent
							
								
									474a13ad90
								
							
						
					
					
						commit
						9edd2df0d3
					
				@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import InnerChild from './InnerChild.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						export let id = 1;
 | 
				
			||||||
 | 
						export let count;
 | 
				
			||||||
 | 
						export let increment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let list;
 | 
				
			||||||
 | 
						$: {
 | 
				
			||||||
 | 
							list = [];
 | 
				
			||||||
 | 
							for (let i = 0; i < count; ++i) {
 | 
				
			||||||
 | 
								list.push(i);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div data-id={id}>
 | 
				
			||||||
 | 
						{#each list as item (item)}
 | 
				
			||||||
 | 
							<InnerChild val={item} {increment} />
 | 
				
			||||||
 | 
						{/each}
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import { afterUpdate } from 'svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						export let val = 1;
 | 
				
			||||||
 | 
						export let increment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						afterUpdate(() => {
 | 
				
			||||||
 | 
							increment();
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<inner>
 | 
				
			||||||
 | 
						{val}
 | 
				
			||||||
 | 
					</inner>
 | 
				
			||||||
@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
						html: `
 | 
				
			||||||
 | 
							<div data-id="1">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="2">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="3">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ssrHtml: `
 | 
				
			||||||
 | 
							<div data-id="1">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="2">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="3">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						async test({ assert, component, target }) {
 | 
				
			||||||
 | 
							await component.done;
 | 
				
			||||||
 | 
							assert.equal(component.getCounter(), 13);
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, `
 | 
				
			||||||
 | 
								<div data-id="3">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div data-id="2">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div data-id="1">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
							`);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import { onMount } from 'svelte';
 | 
				
			||||||
 | 
						import Child from './Child.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let updateCounter = 0;
 | 
				
			||||||
 | 
						let promiseResolve;
 | 
				
			||||||
 | 
						export const done = new Promise(resolve => {
 | 
				
			||||||
 | 
							promiseResolve = resolve;
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
						export const getCounter = () => {
 | 
				
			||||||
 | 
							return updateCounter;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let vals = [1, 2, 3];
 | 
				
			||||||
 | 
						const instances = [];
 | 
				
			||||||
 | 
						let count = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const increment = () => {
 | 
				
			||||||
 | 
							++updateCounter;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						onMount(() => {
 | 
				
			||||||
 | 
							count = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							setTimeout(() => {
 | 
				
			||||||
 | 
								vals = vals.reverse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								setTimeout(promiseResolve);
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{#each vals as val, index (val)}
 | 
				
			||||||
 | 
						<Child bind:this={instances[index]} id={val} {count} {increment} />
 | 
				
			||||||
 | 
					{/each}
 | 
				
			||||||
@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import InnerChild from './InnerChild.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						export let id = 1;
 | 
				
			||||||
 | 
						export let count;
 | 
				
			||||||
 | 
						export let increment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let list;
 | 
				
			||||||
 | 
						$: {
 | 
				
			||||||
 | 
							list = [];
 | 
				
			||||||
 | 
							for (let i = 0; i < count; ++i) {
 | 
				
			||||||
 | 
								list.push(i);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div data-id={id}>
 | 
				
			||||||
 | 
						{#each list as item}
 | 
				
			||||||
 | 
							<InnerChild val={item} {increment} />
 | 
				
			||||||
 | 
						{/each}
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import { afterUpdate } from 'svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						export let val = 1;
 | 
				
			||||||
 | 
						export let increment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						afterUpdate(() => {
 | 
				
			||||||
 | 
							increment();
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<inner>
 | 
				
			||||||
 | 
						{val}
 | 
				
			||||||
 | 
					</inner>
 | 
				
			||||||
@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
						html: `
 | 
				
			||||||
 | 
							<div data-id="1">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="2">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="3">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ssrHtml: `
 | 
				
			||||||
 | 
							<div data-id="1">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="2">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
							<div data-id="3">
 | 
				
			||||||
 | 
								<inner>0</inner>
 | 
				
			||||||
 | 
								<inner>1</inner>
 | 
				
			||||||
 | 
								<inner>2</inner>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						async test({ assert, component, target }) {
 | 
				
			||||||
 | 
							await component.done;
 | 
				
			||||||
 | 
							assert.equal(component.getCounter(), 13);
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, `
 | 
				
			||||||
 | 
								<div data-id="3">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div data-id="2">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
								<div data-id="1">
 | 
				
			||||||
 | 
									<inner>0</inner>
 | 
				
			||||||
 | 
									<inner>1</inner>
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
							`);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						import { onMount } from 'svelte';
 | 
				
			||||||
 | 
						import Child from './Child.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let updateCounter = 0;
 | 
				
			||||||
 | 
						let promiseResolve;
 | 
				
			||||||
 | 
						export const done = new Promise(resolve => {
 | 
				
			||||||
 | 
							promiseResolve = resolve;
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
						export const getCounter = () => {
 | 
				
			||||||
 | 
							return updateCounter;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let vals = [1, 2, 3];
 | 
				
			||||||
 | 
						const instances = [];
 | 
				
			||||||
 | 
						let count = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const increment = () => {
 | 
				
			||||||
 | 
							++updateCounter;
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						onMount(() => {
 | 
				
			||||||
 | 
							count = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							setTimeout(() => {
 | 
				
			||||||
 | 
								vals = vals.reverse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								setTimeout(promiseResolve);
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{#each vals as val, index (val)}
 | 
				
			||||||
 | 
						<Child bind:this={instances[index]} id={val} {count} {increment} />
 | 
				
			||||||
 | 
					{/each}
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue