Ich kann nicht herausfinden, wie meine Componenet-Render-Funktion bei Änderung des Werts this.props.user
ausgeführt wird. Anfangs ist der Wert this.props.user
Null, aber Sekunden später wird ein tatsächlicher Wert angezeigt. Unten zeige ich die Kindkomponente. Die übergeordnete Komponente ordnet den Geschäftsstatus den Props zu und übergibt sie an die untergeordnete Komponentenklasse.Reagieren Sie mit componentWillReceiveProps, um die Komponente erneut zu rendern
export class UserInfoComponent extends Component {
constructor(props){
super(props);
this.state = {user: this.props.user}
}
componentWillReceiveProps(){
this.setState({user: this.props.user})
}
render() {
if(this.state.user)
return (
<h1>{this.state.user.firstName}</h1>
);
return (
<h1>loading</h1>
)
}
}
Warum den Status verwenden? Requisitenwechsel führen bereits zum erneuten Rendern der Komponente. – FurkanO
Der Hauptunterschied hier ist, dass sie im Beispiel der Fragesteller ihre eingegangenen Requisiten in ihren eigenen internen Zustand umwandeln. Dies passiert nur einmal, wenn die Komponente so gerendert wird, dass "this.state.user", auf das verwiesen wird, immer auf den ersten Wert verweist, der jemals übergeben wurde, da dies während der Konstruktion der Komponente passiert. 'componentWillReceiveProps' aktualisiert den Zustand, wenn die Elternkomponente neue Requisiten übergeben hat, aber das passiert nicht auf natürliche Weise und warum das Umwandeln von Requisiten in einen Zustand ist normalerweise ein Anti-Muster – finalfreq
Mein Punkt ist zu sagen, Sie müssen Requisitenänderungen nicht hören um eine Komponente neu zu rendern. Fragender könnte das nicht wissen. Ich habe nicht nach dem Unterschied gefragt. – FurkanO