任何 JavaScript 的 Function 都可直接綁定到 HTML 的 Event,且可完全使用 ECMAScript 2015+ 的 Arrow Function,不必再擔心使用了 this
而必須使用 Function Expression 或 Function Declaration。
Version
macOS Catalina 10.15.1
WebStorm 2019.2.4
Svelte 3.0.0
Event Binding
<script>
let count = 0
let onClick = () => count += 1
</script>
{ count }
<button on:click={ onClick }>+</button>
在 <script>
內任何 function 都可在 HTML 將 event 綁定。
與 Vue 不同的是,Vue 只有在 methods
property 宣告的 function 才能做 event binding,若該 function 有存取到 data
property 的 state,則必須使用 function expression 或 function declaration,無法使用 ES6+ 的 arrow function。
但 Svelte 則無此限制,因為 Svelte 不必透過 this
存取 state,可全部使用 arrow function。
在 HTML 則使用 on
+ event 名稱,並搭配 { }
將 function 加以綁定。
Conclusion
- Stelve 的 event binding 相當簡單,且可完全使用 ES6+ 的 arrow function,非常精簡