Я почти уверен, что мы не можем получить доступ к функциям в скриптах компонентов. Я не нашел никаких подсказок по API и не смог найти ни одного из методов через devTools.
См. Правку ниже
Но мы можем отправлять функции через настраиваемые события, и вы можете решить свое требование следующим образом:
App.svelte
<script>
import A from './A.svelte'
const syncMethods = []
function sync() {
syncMethods.forEach(f => f());
}
function storeSyncHandler(event) {
syncMethods.push(event.detail);
}
</script>
<button on:click={sync}>Sync Components</button>
<A on:mounted={storeSyncHandler}/>
A.svelte
<script>
import { createEventDispatcher, onMount} from 'svelte';
const dispatch = createEventDispatcher();
let synced = ''
function sync() {
synced = '[SYNCED]';
}
onMount(() => {
dispatch('mounted', sync)
})
</script>
<div>Syncable Component {synced}</div>
Дочерний компонент отправляет ' смонтированное событие с помощью метода syn c. Родитель хранит это и может вызывать его при необходимости. Надеюсь, это поможет или даст какие-то идеи.
Вот REPL: https://svelte.dev/repl/6bc923a8326643cca79a6a2f8ee0ffe0?version=3.22.3
Изменить:
Это работает как шарм, когда мы экспортируем на другом компоненте.
Вот рабочий REPL для вызова методов на смонтированных компонентах:
https://svelte.dev/repl/8ba4270a9e334f35a591cdbfbac70e8e?version=3.22.3