Как тег сценария используется для отдельных страниц в Svelte/Sapper?

Экземпляр импортированной библиотеки ( ScrollMagic) в теге script одной страницы в Sapper, экземпляр сохраняется при переходе на другие страницы.

Я пытался уничтожить его внутри ondestroy, но я не могу ссылаться на переменную, ссылающуюся на экземпляр (созданный oncreate).

Как я могу либо добавить тег script к отдельным страницам, либо уничтожить экземпляр при выходе из страницы?

1 ответ

Решение

У вас есть два способа доступа к вещам в ondestroy которые были созданы в oncreate, Во-первых, добавить их в качестве свойств компонента:

<script>
  import ScrollMagic from 'scrollmagic';

  export default {
    oncreate() {
      this.controller = new ScrollMagic.Controller(...);
      this.scene = new ScrollMagic.Scene(...);
    },

    ondestroy() {
      this.controller.destroy();
      this.scene.destroy();
    }
  };
</script>

Во-вторых, использовать this.on("destroy", ...) форма:

<script>
  import ScrollMagic from 'scrollmagic';

  export default {
    oncreate() {
      const controller = new ScrollMagic.Controller(...);
      const scene = new ScrollMagic.Scene(...);

      this.on('destroy', () => {
        controller.destroy();
        scene.destroy();
      });
    }
  };
</script>
Другие вопросы по тегам