Getting references to Components generated in an each block

Using bind:this allows a component to store a reference to it’s children, this can also be used when generating a series of components in an {#each} block.

Method 1: Using an array

This method simply binds the generated component to an array element based on it’s index within the loop.

<script>
	import Child from './Child.svelte';
	const array = [
		{ id: 1, title: 'apple' },
		{ id: 2, title: 'banana' }
	];
	const children = [];
</script>

{#each array as item, i}
	<Child title={item.title} bind:this={children[i]} />
{/each}

Method 2: Using an object as a hashtable

An alternative is to use an unique key and bind the component to an object, effectively making a hashtable of components.

<script>
	import Child from './Child.svelte';
	const array = [
		{ id: 1, title: 'apple' },
		{ id: 2, title: 'banana' }
	];
	const children = {};
</script>

{#each array as item, i (item.id)}
	<Child title={item.title} bind:this={children[item.id]} />
{/each}
Published: