Ich habe versucht, einige Daten von einem Server zu holen, und aus irgendeinem seltsamen Grund wird componentDidMount()
nicht ausgelöst, wie es sein sollte. Ich fügte eine console.log()
Anweisung innerhalb von componentDidMount()
hinzu, um zu überprüfen, ob es zündete. Ich weiß, die Anfrage an den Server funktioniert so, wie es sollte. Wie ich es außerhalb von Reagieren benutzte und es funktionierte wie es sollte.componentDidMount() wird nicht aufgerufen, wenn die reaktive Komponente gemountet wird
class App extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {
obj: {}
};
};
getAllStarShips() {
reachGraphQL('http://localhost:4000/', `{
allStarships(first: 7) {
edges {
node {
id
name
model
costInCredits
pilotConnection {
edges {
node {
...pilotFragment
}
}
}
}
}
}
}
fragment pilotFragment on Person {
name
homeworld { name }
}`, {}). then((data) => {
console.log('getALL:', JSON.stringify(data, null, 2))
this.setState({
obj: data
});
});
}
componentDidMount() {
console.log('Check to see if firing')
this.getAllStarShips();
}
render() {
console.log('state:',JSON.stringify(this.state.obj, null, 2));
return (
<div>
<h1>React-Reach!</h1>
<p>{this.state.obj.allStarships.edges[1].node.name}</p>
</div>
);
}
}
render(
<App></App>,
document.getElementById('app')
);
Verwenden Sie ReactDOM.render? Möglicherweise haben Sie Probleme beim Rendern der Komponente mit dem Originalzustand. Versuchen Sie, den vollständigen this.state.obj.allStarships.edges [1] .node.name in den ursprünglichen Zustand zu versetzen (oder in seiner Verwendung in der Rendermethode etwas sicherer zu sein). –
Sie sollten un TypeError haben, während Ihre Komponente das erste Mal rendert, weil 'allStarships'' undefined' ist. Wenn dies der Fall ist, kann dies Ihre App zum Absturz bringen und die Ausführung von Runtime verhindern. Nur eine Vermutung. –
Ich bin mir nicht sicher, was du meinst Jim Pedid, ich benutze read-dom. –