todoList = []; 5. let value = ""; 6. 7. // APIモック 8. 9. const addTodo = () => { 10. todoList = [...todoList, value]; 11. value = ""; 12. } 13. 14. const deleteTodo = (index) => { 15. todoList.splice(index, 1); 16. todoList = todoList 17. } 18. </script> 19. 20. <div> 21. {#await fetchTodoList ()} 22. <p>Loading...</p> 23. {:then _} 24. <Todo {todoList} {addTodo} {deleteTodo} bind:value /> 25. {/await} 26. </div> 1. <template > 2. <Todo 3. v-model :val="val" 4. : todoList ="todoList " 5. : addTodo ="addTodo " 6. : deleteTodo ="deleteTodo " 7. /> 8. </template > 9. 10. <script > 11. import Todo from "./Todo.vue" ; 12. import { ref } from "vue" ; 13. export default { 14. name: "TodoContainer" , 15. components: { 16. Todo , 17. }, 18. async setup () { 19. const todoList = ref([]); 20. const val = ref(""); 21. 22. // API モック 23. 24. await fetchTodoList (); 25. 26. const addTodo = () => { 27. todoList .value .push (val.value ); 28. val.value = ""; 29. }; 30. const deleteTodo = ( index ) => { 31. todoList .value .splice (index , 1); 32. }; 33. return { 34. todoList , 35. val, 36. addTodo , 37. deleteTodo , 38. }; 39. }, 40. }; 41. </script > App.vue Todo TodoContainer App.svelte Todo TodoContainer 35 Svelte、Vueの比較~API処理~