Svelte - 如何在模板中使用方法?

imb*_*olc 2 svelte

使用 vue 我通常将任何复杂的逻辑提取到方法中,例如

<li v-for="todo in todos" v-show="!isTodoComplete(todo)">
  {{ todo }}
</li>
Run Code Online (Sandbox Code Playgroud)

但是当我用 svelte 尝试相同的方法时:

{#each todos as todo}
    <li hidden={isComplete(todo)}>{todo}</li>
{/each}
...
methods: { isComplete (todo) { ... } }
Run Code Online (Sandbox Code Playgroud)

我收到错误TypeError: ctx.isComplete is not a function

难道我做错了什么?如何做这样的事情苗条的方式?

Ric*_*ris 5

Svelte 区分助手方法

助手是在模板中用于处理数据的函数——它们应该是纯函数,除了作为参数传入的内容(例如todo对象)之外,它们不能访问组件状态。

方法是功能的事情,往往以响应事件。他们确实可以访问组件状态。

在这种情况下,isComplete应该是一个帮手,而不是一个方法。