Вы, кажется, забыли фактически отправить действие для получения данных. Попробуйте это в созданном хуке:
created() {
this.$store.dispatch('Dashboard', 'getAllBoardPostData');
this.populate();
}
РЕДАКТИРОВАТЬ:
Отправка действия в другой компонент в порядке. В этом случае созданный хук может быть слишком ранним в жизненном цикле, чтобы ждать получения данных (поскольку этот компонент не знает о том, кто выполняет диспетчеризацию), и он запускается только один раз. Вы можете добавить наблюдатель, чтобы дождаться изменения вычисленного свойства и вызвать побочный эффект (метод populate).
watch: {
boardColumns() {
this.populate()
}
}
Или, если данные необходимы для визуализации компонента, вы можете использовать эти данные для определения v-if
в родительском компоненте, как предложено @Estus Flask. В зависимости от того, как ваш компонент структурирован с точки зрения повторного использования и жесткой связи с магазином, вы можете даже передать его в качестве реквизита в этой точке.
// Parent component.vue
<template>
<Doughnut
v-if="boardColumns && boardColumns.length"
:boardColumns="boardColumns"
/>
</template>
<script>
import Doughnut from './Doughnut.vue'
export default {
components: {
Doughnut,
},
computed: {
boardColumns() {
return this.$store.state.Dashboard.boardColumns
}
}
}
</script>
// Doughnut.vue
<template>
<div>
{{ boardColumns }}
</div>
</template>
<script>
export default {
name: "Doughnut",
props: {
boardColumns: {
type: Object,
required: true,
}
},
created() {
this.populate();
},
methods: {
populate() {
console.log(this.boardColumns)
}
}
};
</script>