im Router offiziellen reagieren reagiert example, gibt es eine ModalSwitch Klasse, mit dem folgenden CodeRouter Eigenschaftswert
class ModalSwitch extends React.Component {
previousLocation = this.props.location
componentWillUpdate(nextProps) {
const {location} = this.props
if (
nextProps.history.action !== 'POP' &&
(!location.state || !location.state.modal)
) {
this.previousLocation = this.props.location
}
}
render() {
const {location} = this.props
const isModal = !!(
location.state &&
location.state.modal &&
this.previousLocation !== location
)
return (
// ...
)
}
}
in der ersten Zeile in der Klasse
previousLocation = this.props.location
warum
previousLocation
auf diese Weise erklärt?Ich dachte, ich sollte
const
vorpreviousLocation
hinzufügen, aber es ist falsch, weil es Syntaxfehler gibt, warum?const previousLocation = this.props.location // syntax error
Oder ich dachte, ich
previousLocation
innerhalbconstructor
Funktion setzen sollte aber auch hier ist es falschconstructor(){ super(); this.previousLocation = this.props.location // this.props would be undefined, why? }
die zweite Frage wäre: ist der Wert von
this.props
das gleiche in den folgenden Orten?previousLocation = this.props.location componentWillUpdate(nextProps) {...} render(){...}
Dank @Daniel Tran, ich schätze wirklich Ihre Hilfe! Ihre Antwort auf Frage 1 scheint korrekt zu sein. Mit der Antwort auf Ihre Frage 1, kann ich den Code wie Sie und console.log (previousLocation) ändern und seinen Wert sehen.Ihre Antwort auf Frage 2 scheint jedoch falsch zu sein. eine schnelle console.log (this.props) innerhalb von constructor(), componentWillUpdate() und render() zeigt unterschiedliche Werte, wenn Sie zu einem anderen Ort navigieren, bitte überprüfen Sie, ob ich richtig bin. – webberpuma
Aktualisieren Sie die Antwort zur Klarstellung –
ok, es ist jetzt klar, ich werde Ihre Antwort akzeptieren. Die Grammatik könnte jedoch besser sein. – webberpuma