Как подключить обработчик событий на стороне клиента к слоту в компоненте 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');
    }

Я читал о том, как заставить код выполняться только на клиенте, и, несмотря на то, что мне не нравятся все шаблоны, я пытался это сделать, и, очевидно, слоты не передаются дочерним компонентам, так что, на мой взгляд, это не работает.

Буду признателен за любые советы о том, как получить правильный синтаксис и структуру для этой задачи.

0 ответов

Другие вопросы по тегам