@kirill-93

Как запустить метод при загрузке страницы?

При инициализации проекта идет запрос информации об авторизованном пользователе.
В этом время в компонте нужно загрузить новости для пользователя, но для этого нужно сначала получить его id.
Теоритически, запрос информации о пользователе может подвиснуть и на момент загрузки компонента, информация id пользователя может еще отсутствовать.
То есть такой подход не сработает:
//component
...
created() {
    this.$axios.post('/news', {user_id: this.$store.state.user.id})
}

Тогда можно запустить этот метод в watch:
//component
...
watch: {
    '$store.state.user': function() {
            this.$axios.post('/news', {user_id: this.$store.state.user.id})
    }
}

Но этот метод не сработает, если на момент загрузки компонента информация уже загрузилась.
Тогда третий вариант:
//component
...
watch: {
    '$store.state.user': function() {
           this.loadNews();
    }
},
created() {
    this.loadNews();
},
methods: {
    loadNews() {
        this.$axios.post('/news', {user_id: this.$store.state.user.id});
    }
}

Но такой код выглядит избыточным.
Как правильно делать?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 3
FLUNKEY
@FLUNKEY
самовар
//component
...
watch: {
    '$store.state.user': {
         handler() {
             this.loadNews();
         },
         immediate: true
     }
},
methods: {
    loadNews() {
        this.$axios.post('/news', {user_id: this.$store.state.user.id});
    }
}
Ответ написан
@nvdfxx
Senior Pomidor developer
То есть такой подход не сработает:
//component
...
created() {
    this.$axios.post('/news', {user_id: this.$store.state.user.id})
}


Почему не сработает?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Страховой Кабинет Нижний Новгород
от 60 000 до 90 000 руб.
от 90 000 до 220 000 руб.
Posh Space Москва
от 160 000 до 180 000 руб.
24 июл. 2019, в 01:46
1700 руб./за проект
23 июл. 2019, в 23:31
9000 руб./за проект
23 июл. 2019, в 22:14
18000 руб./за проект