點燈坊

失くすものさえない今が強くなるチャンスよ

Svelte 之 Event Binding

Sam Xiao's Avatar 2019-11-24

任何 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 加以綁定。

event000

Conclusion

  • Stelve 的 event binding 相當簡單,且可完全使用 ES6+ 的 arrow function,非常精簡