У меня есть приложение, которое просто скрывает содержимое Hidden.svelte
:
<script>
let shown = false;
function show() {
shown = true;
}
</script>
<svelte:options accessors={true}/>
{#if shown}
<slot/>
{/if}
Родитель App.svelte
:
<script>
import Hidden from 'Hidden';
let child;
</script>
<Hidden bind:this={child}>
Content
</Hidden>
<button on:click={() => child.shown = true}>Show</button>
Таким образом, shown
ребенка можно легко установить благодаря <svelte:options accessors={true}/>
в родительском
Но я хочу использовать метод show()
, поскольку он может не только установить значение shown
, но и выполнить некоторые маги c
Thx до Chrome DevTools, я обнаружил, что все компоненты имеют Array
с реквизитами и методами, к которым можно получить доступ через некоторые .$$.ctx
, поэтому метод show()
Hidden можно вызвать так:
<button on:click={() => child.$$.ctx[2]()}>Show</button>
Но) Вы знаете) Есть ли законный способ сделать это?