mirror of https://github.com/sveltejs/svelte
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
778 B
39 lines
778 B
6 years ago
|
<svelte:options immutable/>
|
||
6 years ago
|
|
||
|
<script>
|
||
6 years ago
|
import ImmutableTodo from './ImmutableTodo.svelte';
|
||
|
import MutableTodo from './MutableTodo.svelte';
|
||
6 years ago
|
|
||
6 years ago
|
let todos = [
|
||
|
{ id: 1, done: true, text: 'wash the car' },
|
||
|
{ id: 2, done: false, text: 'take the dog for a walk' },
|
||
|
{ id: 3, done: false, text: 'mow the lawn' }
|
||
|
];
|
||
6 years ago
|
|
||
|
function toggle(id) {
|
||
|
todos = todos.map(todo => {
|
||
|
if (todo.id === id) {
|
||
|
// return a new object
|
||
|
return {
|
||
|
id,
|
||
|
done: !todo.done,
|
||
|
text: todo.text
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// return the same object
|
||
|
return todo;
|
||
|
});
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<h2>Immutable</h2>
|
||
|
{#each todos as todo}
|
||
6 years ago
|
<ImmutableTodo {todo} on:click="{() => toggle(todo.id)}"/>
|
||
6 years ago
|
{/each}
|
||
|
|
||
|
<h2>Mutable</h2>
|
||
|
{#each todos as todo}
|
||
6 years ago
|
<MutableTodo {todo} on:click="{() => toggle(todo.id)}"/>
|
||
6 years ago
|
{/each}
|