Я пытаюсь загрузить изображения свыше firestore
в Vuex
и выполнить цикл с v-for
над свойством computed
в компоненте.Изображения есть, но там первое изображение слайда пустое.Если я запускаю карусель, появляется правильное второе изображение, и оттуда оно работает нормально.
Мой вопрос: почему первое v-carousel-item
пустое?и второе, почему он не запускается?
Вот мой код для компонента:
<template>
<v-container app fluid>
<p>home</p>
<v-carousel>
<v-carousel-item
cycle
v-for="(item,i) in carouselImages"
:key="i"
:src="item.url"
>
</v-carousel-item>
</v-carousel>
</v-container>
</template>
<script>
import { createNamespacedHelpers } from 'vuex'
const { mapState, mapActions, mapGetters } = createNamespacedHelpers('carousel')
export default {
name: 'app',
methods: {
...mapActions([
'getCarouselImages'
])
},
computed : {
...mapGetters({
carouselImages: 'loadedCarouselImages'
})
},
created(){
console.log("created");
this.getCarouselImages();
}
}
вот мой код модуля хранилища vuex:
import Vue from 'vue'
import Vuex from 'vuex'
import firestore from '../../firebase/firestore'
Vue.use(Vuex)
const state = {
carouselImages: []
}
const mutations = {
setImages(state, payload){
state.carouselImages.push(payload);
}
}
const actions = {
getCarouselImages: ({ commit }) => {
firestore.collection("Carousel").get()
.then(querySnapshot => {
querySnapshot.forEach(image => {
commit('setImages',image.data());
})
})
.catch(error => {
console.log(error);
})
}
}
const getters = {
loadedCarouselImages: state => {
return state.carouselImages.sort((imageA, imageB)=>{
return imageA.pos < imageB.pos
})
}
}
export default {
namespaced: true,
state,
mutations,
actions,
getters
}
Я пытаюсьисследовать подобную проблему, но я не нашел что-то.Возможно, мне придется запустить карусель вручную?Или почему он не запускается, даже если состояние правильно изменяется в хуке created
.А также все работает отлично, как только я нажимаю на нее вручную.
Спасибо, ребята, за вашу помощь.
С уважением
Дани
Обновление
Я тоже попробовал то же самое с VueFire
Libary и получил то же самое поведение.Вот код:
<template>
<v-carousel cycle>
<v-carousel-item
v-for="(item,i) in items"
:key="i"
:src="item.url"
>
</v-carousel-item>
</v-carousel>
</template>
<script>
import { db } from "../firebase/firestore";
export default {
name: 'Carousel',
props: {
msg: String
},
data(){
return{
items: []
}
},
firestore(){
return{
items: db.collection('Carousel')
}
console.log(this.items);
},
created(){
console.log(this.items);
}
}
</script>