Ich verwende Vue Resource, um eine Bildersammlung von einer REST-API abzurufen. Die Anfrage wird im created
Hook meiner Vue-Komponente gesendet.Mounted-Methode wird ausgelöst, bevor Daten geladen werden - VueJS
Das Problem ist, ich versuche, auf die abgerufenen Daten im mounted
Hook zuzugreifen, aber die Daten werden nicht geladen.
ich diesen Fehler in der Konsole:
[Vue warn]: Error in mounted hook: "TypeError: Cannot read property 'forEach' of undefined"
Hier ist meine Komponente:
<script>
export default {
data() {
return { imgs : '' };
},
created() {
// the full url is declare in my main.js
this.imgs = this.$resource('acf/v3/pages/4');
this.imgs.query().then((response) => {
console.log('success', response);
this.imgs = response.data.acf.gallery;
}, (response) => {
console.log('erreur', response);
});
},
mounted() {
// get the ref="image" in my dom template
let imgs = this.$refs.image;
imgs.forEach((img) => {
// I do some stuff with imgs
});
}
}
</script>
Wenn ich einen setTimeout
um den Inhalt von mounted
wickeln, funktioniert alles einwandfrei.
So verstehe ich nicht, wie ich warten kann, bis meine Daten geladen werden, bevor der mounted
Hook ausgeführt wird. Ist das nicht die Rolle der Vue-Lebenszyklus-Hooks?
warum verwenden Sie nicht einfach created()? – samayo
Weil in 'created' nichts reaktiv ist. Sie können das DOM nicht vor dem angehängten Hook manipulieren. [Lesen Sie diese Dokumentation] (https://alligator.io/vuejs/component-lifecycle/). Und das ist genau das gleiche Problem, wenn ich nur einen lifeCycle Haken benutze. Mein Inhalt wird nicht geladen, wenn ich ihn verwenden möchte. – BrownBe