@flokiowl
HTML-верстальщик

Куда писать «обычные» скрипты во Vue js?

Добрый вечер. Изучаю Vue js, и у меня появился такой вопрос: куда писать стандартные, всем привычные скрипты, например плавный скролл...я подумал, что нужно использовать хуки, но так возникла проблема:
Есть у меня такой простецкий код, и он работает, но если я перейду на другой роут, а потом вернусь на этот же, в консоле пишет ошибку: "Uncaught TypeError: Cannot read property 'style' of undefined"
P.S при этом скрипт продолжает работать

created () {
    window.addEventListener('scroll', () => {
          let el = this.$refs.parallax;
          let val = document.documentElement.scrollTop / 100;
          el.style.filter = `blur(${val}px)`;
    })
}
  • Вопрос задан
  • 1221 просмотр
Пригласить эксперта
Ответы на вопрос 2
@veremii
говнокодю на js
Я бы вам советовал подучить хуки и что происходит в вашем случае. Вы инициализирует скролл в руке created, однако на этом хуке компонен ещё не находится в дом дереве поэтому вы ловите ошибку. Вам нужно использовать этот же код в хуке mounted.
Ответ написан
@flokiowl Автор вопроса
HTML-верстальщик
Кое что всё таки нашел, возможно кому-то поможет решение:

methods: {
		blur () {
			let el = this.$refs.parallax;
			let val = document.documentElement.scrollTop / 100;
			el.style.filter = `blur(${val}px)`;
		}
	},
	created () {
		window.addEventListener('scroll', this.blur)
	},
	destroyed () {
		window.removeEventListener('scroll', this.blur);
	}


P.S в хуках жизненного цикла vue нельзя использовать стрелочные функции
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы