Hier Reagieren geladen ist mein Speicher:Kann nicht herausfinden, warum die Daten nicht in der Komponente
import helper from './../../helpers/RestHelpers.js';
var posts = [];
class PostStore {
constructor() {
helper.get('/api/posts')
.then((data) => {
posts = data;
console.log(posts);
}
);
}
getPosts() {
return posts;
}
};
export default new PostStore();
Wenn ich console.log
Beiträge in Helfer-Funktion, erhalte ich die richtigen Daten. Aber wenn ich console.log
von der Komponente, ist das Array von Posts leer.
Hier ist meine Komponente:
import React from 'react';
import postStore from '../stores/PostStore';
class Home extends React.Component {
constructor() {
super();
this.state = {
posts: postStore.getPosts()
}
console.log(this.state.posts);
}
render() {
return (
<div className="welcome">
{this.state.posts.map(function(post, index) {
return (
<PostItem post={post} key={"post " + index} />
)
})
}
</div>
)
}
}
class PostItem extends React.Component {
render() {
return <div>{this.props.post.postName}</div>;
}
}
export default Home;
Ihre helper.get ('/ api/posts') ist eine Ajax-Anfrage. Wenn der Konstruktor ihn lädt, wartet er nicht darauf, dass die Daten tatsächlich abgerufen werden. – Shaunak
Wie würde ich einstellen, dass auf das Abrufen der Daten gewartet wird? – bounty
Es wäre hilfreich, wenn Sie ein kleines funktionierendes Beispiel in jsfiddle erstellen, um das Problem zu replizieren. – Shaunak