如何动态加载多个 svelte 组件?
How to load multiple svelte components dynamically?
我有一个 Address
的 svelte 组件,用户可以通过单击按钮添加多个收件人(主要、次要、其他等)。我不知道用户会添加多少个地址。我正在努力用 Svelte 对此进行建模。我发现最接近的是 svelte:component
但它一次只允许加载一个组件。
您可以将所有地址保存在一个数组中,并为该数组中的每个元素呈现一个 Address
组件,并使用例如更新元素。从组件发出的事件。
示例 (REPL)
<!-- App.svelte -->
<script>
import Address from './Address.svelte';
let addresses = [''];
function addAddress() {
addresses = [...addresses, ''];
}
function changeAddress(address, index) {
addresses = addresses.map((a, i) => (i === index ? address : a));
}
</script>
{#each addresses as address, index}
<Address value="{address}" on:change="{e => changeAddress(e.target.value, index)}" />
{/each}
<button on:click="{addAddress}">Add address</button>
<!-- Address.svelte -->
<script>
export let value = '';
</script>
<div>
<input {value} on:change />
</div>
我有一个 Address
的 svelte 组件,用户可以通过单击按钮添加多个收件人(主要、次要、其他等)。我不知道用户会添加多少个地址。我正在努力用 Svelte 对此进行建模。我发现最接近的是 svelte:component
但它一次只允许加载一个组件。
您可以将所有地址保存在一个数组中,并为该数组中的每个元素呈现一个 Address
组件,并使用例如更新元素。从组件发出的事件。
示例 (REPL)
<!-- App.svelte -->
<script>
import Address from './Address.svelte';
let addresses = [''];
function addAddress() {
addresses = [...addresses, ''];
}
function changeAddress(address, index) {
addresses = addresses.map((a, i) => (i === index ? address : a));
}
</script>
{#each addresses as address, index}
<Address value="{address}" on:change="{e => changeAddress(e.target.value, index)}" />
{/each}
<button on:click="{addAddress}">Add address</button>
<!-- Address.svelte -->
<script>
export let value = '';
</script>
<div>
<input {value} on:change />
</div>