In einem kontinuierlichen Abschnitt von Code innerhalb componentDidMount genannt:ReactJS: [this.props] unmögliche verschieden ist zu [Stützen in dieser]
console.log('hv props');
for(var i = 0; i<20; i++){
console.log(this);
console.log(this.props);
}
console.log('hv props end');
this
soll this.props.account werden zu müssen.
in allen
console.log(this);
this.props.account
ist ein Objekt mit Feldern.
jedoch in allen
console.log(this.props);
this.props.account
ist null
. (Das account
Feld this.props
ist null
)
ich diesen Abschnitt platziert habe in verschiedenen Teilen meines Programms, und ich habe versucht, eine Zeit zwischen Zugabe console.log(this)
und console.log(this.props)
aufwendigen Prozess, aber das ist immer noch der Fall.
Was könnte das verursacht haben? Vielen Dank.
'console.log' zeigt nicht unbedingt die Struktur, die das Objekt zum Zeitpunkt der Protokollierung hat, sondern die Struktur, die es hat, als Sie auf das Dreieck klickten, um es zu untersuchen. In der Zwischenzeit (zwischen Protokollierung und Inspektion in der Konsole) wurde die Komponente möglicherweise mit neuen Requisiten neu gerendert. Denken Sie daran, dass 'componentDidMount' nur aufgerufen wird, wenn die Komponente zum ersten Mal gerendert/gemountet wird, nicht bei nachfolgenden Renderings. Siehe http://stackoverflow.com/q/41492035/218196, was ein ähnliches Problem ist. –
Ich sehe, dass Sie die gelöschte Antwort kommentiert haben. Die Antwort ist wahrscheinlich richtig. Ihr Fall scheint nicht anders zu sein.Probieren Sie: 'var obj = {requisiten: {account: null}}; console.log (obj); console.log (obj.props); void obj.props = {account: 'nicht null'}; 'in der Browserkonsole. Erweitern Sie das erste Protokoll. Beachten Sie, dass "account:" not null "" angezeigt wird, obwohl das zweite Protokoll "account: null" enthält. Natürlich ist das immer noch eine Annahme. Um eine absolut eindeutige Antwort zu geben, müssten wir Ihren Code kennen. –
Beachten Sie auch, dass die Schleife völlig irrelevant ist. Der Wert von 'this.props' ändert sich nicht, während die Schleife ausgeführt wird, seit die Schleife blockiert ist. Wenn dies der Fall ist, verzögern Sie die Ausführung von 'console.log (this.props)', indem Sie 'setTimeout (() => console.log (this.props), 2000)' ausführen. –