作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Svelte 开发一个小型的待办事项应用程序。我从 jsonplaceholder 中列出了 10 个待办事项。
我在 App.svelte 中有这个:
<script>
import { onMount } from "svelte";
import Header from './Header.svelte';
import ToDoList from './ToDoList.svelte';
import Footer from './Footer.svelte';
const apiURL = "https://jsonplaceholder.typicode.com/todos";
const limit = 10;
let todos = [];
export let unsolvedTodos = [];
onMount(() => {
getTodos();
});
const getTodos = () => {
fetch(`${apiURL}?&_limit=${limit}`)
.then(res => res.json())
.then((data) => todos = data)
.then(getUnsolvedTodos);
}
const getUnsolvedTodos = () => {
unsolvedTodos = todos.filter(todo => {
return todo.completed === false;
})
}
const deleteTodo = (todo) => {
let itemIdx = todos.findIndex(x => x == todo);
todos.splice(itemIdx, 1);
todos = todos;
}
</script>
<div class="app-wrapper">
<div id="toDoApp">
<Header />
<ToDoList todos={todos} />
<Footer />
</div>
</div>
在 ToDoList.app 中:
<script>
import TodoItem from './TodoItem.svelte';
export let todos;
let deleteTodo;
</script>
{#if todos.length > 0}
<ul class="todo-list">
{#each todos as todo, index}
<TodoItem {todo} on:deleteTodo = {deleteTodo(todo)} />
{/each}
</ul>
{/if}
在 TodoItem.svelte 中:
<script>
import {createEventDispatcher} from 'svelte';
import { fade, fly } from 'svelte/transition';
import { flip } from 'svelte/animate';
export let todo;
const dispatch = createEventDispatcher();
const Delete = () => dispatch("deleteTodo", todo);
</script>
<li transition:fly="{{x:-100, duration:200}}">
<input type="checkbox" checked="{todo.completed}" />
<span class="title {todo.completed ? 'done' : ''}">{todo.title}</span>
<button on:click="{Delete}"><i class="fa fa-trash" aria-hidden="true"></i></button>
</li>
我一定是遗漏了一些东西,因为我得到了错误 ctx[1] is not a function
可以在这个 REPL 中看到.
我做错了什么?
最佳答案
在 ToDoList.svelte
中,您正在调用 deleteTodo(todo)
但 deleteTodo
未定义。 Svelte 真的应该在这里抛出更好的错误消息......
编辑:
此外,如果您分配一个事件处理程序,您希望传递对函数的引用,例如 on:deleteTodo = {() => deleteTodo(todo)}
或 on: deleteTodo = {deleteTodo}
并且不直接调用该函数。
关于javascript - 是什么导致这个小型 Svelte 应用程序出现 "ctx[1] is not a function"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67577252/
我是一名优秀的程序员,十分优秀!