Как подключить обработчик событий на стороне клиента к слоту в компоненте Sapper?
Я изучаю стандартный шаблон svelte-sapper и хочу добавить кнопку в Nav
компонент, который будет оправдывать некоторую логику входа в систему. Я также хочу разделить представление кнопки и логику, поэтому я пытаюсь использовать слоты для этого. в Nav.svelte
:
<script>
import Login from './Login.svelte';
...
</script>
...
<li>
<Login let:onclick={onclick}>
<button onClick={onclick}>
Click me!
</button>
</Login>
</li>
в Login.svelte
:
<script>
let onclick;
onclick = function() {
window.alert('ALERT');
// Browser-specific Auth0 logic goes here
};
</script>
<div>
<slot onclick={onclick}></slot>
</div>
Я ясно не имею понятия, что я делаю, потому что код выполняется на стороне сервера до гидратации (о чем свидетельствует ошибка 500, кратко показанная при выполнении маршрута сервера), а затем, когда я нажимаю кнопку, которую я получаю (в консоли браузера):
function() {
--------^ Uncaught SyntaxError: Unexpected token (
window.alert('ALERT');
}
Я читал о том, как заставить код выполняться только на клиенте, и, несмотря на то, что мне не нравятся все шаблоны, я пытался это сделать, и, очевидно, слоты не передаются дочерним компонентам, так что, на мой взгляд, это не работает.
Буду признателен за любые советы о том, как получить правильный синтаксис и структуру для этой задачи.