Как наследовать значение от методов во Vue?

<div @mouseenter="mouseEnter"  @mouseleave="mouseLeave">
                <h1>Hover me!</h1>
            </div>

methods: {
            mouseEnter() {
                setInterval(function() {
                    console.log( "тик" );
                }, 500);
            },
            
            mouseLeave() {
                setTimeout(function() {
                    this.mouseEnter()
                    console.log( "достаточно" );
                }, 1);
            }
      }


Выше пытаюсь остановить выполнение функции

консоль жалуется на на то this.mouseEnter() - не функция
  • Вопрос задан
  • 146 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега Vue.js
пытаюсь остановить выполнение функции

Что-то я такого у вас вообще не вижу. Для отмены действия setInterval надо вызвать метод clearInterval, ну и конечно предварительно сохранить id таймера:

data: () => ({
  intervalID: null,
}),
methods: {
  mouseEnter() {
    this.intervalID = setInterval(() => {
      console.log('тик');
    }, 500);
  },
  mouseLeave() {
    clearInterval(this.intervalID);
    this.intervalID = null;
  },
},
Ответ написан
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
У Вас контекст this не передается внутрь setTimeout.
Нужно либо использовать что-то типа let self = this, либо стрелочные функции.

Но если нужно остановить выполнение setTimeout или setInterval, то нужно сохранять эти счетчики и применять к ним clearInterval и clearTimeout.

https://learn.javascript.ru/settimeout-setinterval
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
mouseLeave() {
                setTimeout(() => {
                    this.mouseEnter()
                    console.log( "достаточно" );
                }, 1);
            }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы