Ich habe Probleme beim Rendern (und erneutes Rendern) einer Kindkomponente abhängig von Daten in der Eltern. Es gibt einen Ajax-Aufruf im Elternteil, um die Daten abzurufen, da der Ajax von einer anderen Kindkomponente aufgerufen werden muss.render Kindkomponente bei der Rückkehr von Ajax Anruf in Eltern in reagieren
class Parent extends React.Component {
constructor(props){
super(props);
this.state = {
items: []
}
changeAccount(){
this.updateList(getParameters());
}
updateList(args){
let that = this;
// here is the ajax call
ajax({....
success: function(data){
that.setState({items: data})
}
})
}
render() {
return (
<SelectAccount changeAccount={this.changeAccount}/>
<Table items={this.state.items} getInitialItems={this.changeAccount}/>
)
}
}
SelectAccount
ist nicht super wichtig. Es ist eine Komponente, die über Auswahloptionen verfügt, um ein Konto zu ändern, das die Ajax-Methode der übergeordneten Komponente aufruft. Ich möchte in der Lage sein, die Table
Komponente immer wieder zu rendern, wenn die Daten vom Server zurückgegeben werden.
Die Tabelle Komponente ist als solche:
classTable extends React.Component {
constructor(props){
super(props);
this.state = {
items: this.props.items
};
}
componentDidMount(){
this.props.getInitialItems();
}
render() {
let rows = [];
this.state.items.map((item, index) => {
rows.push(<Row item={item} key={item.key} />)});
return (
<div className="table-body">{rows}</div>
)
}
Der Nachteil ist auch hier, dass ich die Tabelle möchte zunächst mit einer leeren Array zu machen, und wenn sie angebracht ist, möchte ich die ajax nennen Methode im Elternteil, um die Daten zu füllen. Der gleiche Ajax-Aufruf wird ausgeführt, wenn ein Benutzer Konten ändert, also muss ich die items
in Parent
an die items
in Table
binden und es neu gerendert haben.
Also, Kind macht (Table
), ruft die Ajax-Methode (updateList()
) in Parent
und '' passiert die items
wieder auf Table' where its
Elemente `aktualisiert werden.
Ich habe versucht, den Ajax-Aufruf in die Komponente Table
, aber das schafft seine eigenen Probleme beim Aufruf dieser Methode aus einer Geschwisterkomponente.
Auf der Suche nach Vorschlägen - ich vermisse offensichtlich etwas. Vielen Dank.
Ehrfürchtig. Vielen Dank. Ich habe es übertrieben. – captainKirk104