google_online
@google_online
My morning begins with coffee and Twitter.

Почему не уходит GET запрос?

Создаю блог с постами. Реализовано 1-отображение постов, 2-отображение одного поста, 3-категории постов. Нажимаю к примеру на категорию 'JavaScript' чтоб отобразить все посты с этой категорией, всё работает. Но если потом нажать на другую категорию, то нифига не отображает(ошибок в консоле нет). На сервер GET запрос не уходит, только в адресной строке передаются "id" той категории на которую жмякаю.

App.vue
<template>
    <div id="app">
        <b-container>
            <app-header/>
                <b-row>
                    <b-col cols-xs="6" md="4"><app-aside/></b-col>
                    <b-col><router-view/></b-col>
                </b-row>
        </b-container>
    </div>
</template>

<script>
import Header from './components/commons/App-header'
import Aside from './components/commons/App-aside'
export default {
    name: "app",
    components: {
        'app-header': Header,
        'app-aside': Aside, 
    },

};
</script>


Home.vue
<template>
    <div>
        <b-row>
            <b-col><blog-feed/></b-col>
        </b-row>
    </div>
</template>

<script>
import BlogFeed from './commons/BlogFeed'
export default {
    name: 'Home',
        components: {
            'blog-feed': BlogFeed,
    },
}
</script>


App-aside.vue
<template>
    <div>
        <b-card title="Card Category">
            <div v-for="category in categories" :key="category.id">
                <router-link :to="{name: 'post_filter', params: {id: category.id}}">{{ category.name }}</router-link>
            </div>
        </b-card>
    </div>
</template>

<script>
import axios from 'axios'
import { mapGetters } from 'vuex'
export default {
    name: 'App-aside',
    computed: mapGetters ({
        categories: 'categories'
    }),
    created() {
        this.$store.dispatch('GET_CATEGORIES')
    }

}
</script>


Здесь я получаю посты из категории
PostFilter.vue
<template>
    <div>
        <div v-for="post in category" :key="post.id">
            <b-card>
                <h3>{{ post.title }}</h3>
                {{ post.body }}
            </b-card>
        </div>
    </div>
</template>

<script>
import Aside from './commons/App-aside'
import { mapGetters } from 'vuex'
export default {
    name: 'PostFilter',
    computed: mapGetters ({
        category: 'category'
    }),
    created() {
        this.$store.dispatch('GET_FILTER_CATEGORY', this.$route.params.id)
    }

}
</script>
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
У вас запрос отсылается в created, а при изменении параметров экземпляр компонента заново не создаётся. Делайте watch на $route.params.id и отправляйте запрос в соответствующем обработчике.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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