@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});
    }
}

Но такой код выглядит избыточным.
Как правильно делать?
  • Вопрос задан
  • 1171 просмотр
Пригласить эксперта
Ответы на вопрос 3
Konstantin18ko
@Konstantin18ko
Стоматолог
beforeCreate
Ответ написан
Комментировать
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})
}


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

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

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