Ich versuche zu schreiben, einfach Ajax Loader und ich frage mich, dass ich verhindern kann, dass props.children im übergeordneten Container. Das Problem ist, dass Kinder rendern wollen, egal, ob der Loader es anzeigen will oder nicht, und ob das Rendering auf AJAX-Daten basiert, die Fehler enthalten.reagieren verhindern Kinder render (Ajax Loader warten auf Antwort)
Beispiel: https://jsfiddle.net/j8dvsq39/
Example2: Dieses Beispiel wird Fehler couse this.state.data.user produzieren wird, bevor Ajax-Anforderung nicht definiert.
Loader:
import React from 'react'
export default React.createClass({
getDefaultProps() {
return { text: "Loading", loaded: false };
},
render() {
if(this.props.loaded == false)
return <div>{this.props.text}</div>;
else
return <div>{this.props.children}</div>;
}
})
Klasse mit Loader
import React from 'react'
import Loader from '../helpers/Loader';
import {comm} from '../Comm';
export default React.createClass({
getInitialState() {
return {loaded: false, data: null};
},
componentWillMount(){
comm.get("/xxx/xxx", {json: 1}, (back) => {
console.log(back);
this.setState({loaded: true, data: back});
});
},
render(){
return <Loader loaded={this.state.loaded}>{this.state.data.user.name}</Loader>
});
Thx für Antwort. Aber ich weiß, dass ich Variablen überprüfen kann, ich möchte das einfach nicht tun. Ich hätte gerne sauberen Code "nachdem Daten erhalten" Ich weiß, dass ich kann diese Klasse funktioniert mit ifs, ich frage mich nur, kann ich sie in Loader verhindern. – rzseattle