As an alternative, I’ve been using a component for this purpose.
// Tracker.svelte
<script>
import { Tracker } from 'meteor/tracker';
import { Meteor } from 'meteor/meteor';
import { onDestroy } from 'svelte';
export let deps = [];
export let fn;
const dep = new Tracker.Dependency;
$: {
deps;
dep.changed();
}
const computation = Tracker.autorun(() => {
dep.depend();
fn();
});
onDestroy(() => {
computation.stop();
})
</script>
<slot></slot>
Then you’d use it as a wrapper,
<script>
export let id;
let model;
function computation() {
model = Model.findOne({ _id: id });
}
</script>
<Tracker deps={[id]} fn={computation}>
<h1>{model.name}</h1>
</Tracker>
Though I’ll admit, I only did it this way because I thought onDestroy had to be inside a component.