Ich gehe davon aus, wenn Sie sagen „die Komponente führt nur einmal“ Sie meinen es nur einmal montiert.
Da Sie Ihren Code nicht angezeigt haben, kann ich nur davon ausgehen, dass Sie einen der lifecycle methods: componentWillMount
| componentDidMount
Diese Methoden werden nur einmal beim Montieren von Komponenten ausgelöst. Wenn Sie bei Ihrer Route-Konfiguration zu einer anderen URL wechseln, wird sie nicht mehr unmounten und erneut mounten (daher wird Ihre Ladelogik nur einmal ausgelöst), sondern einfach erneut gerendert, wenn sich ihre Props geändert haben. Deshalb sollten Sie eine Lifecycle-Methode anschließen, die bei jeder Prop-Änderung ausgelöst wird (wie componentWillReceiveProps
).
Versuchen Sie stattdessen:
class TVPage extends Component {
constructor(props) {
super(props);
}
componentWillMount() {
// Load your data/state (initial)
this.props.loadMyData(this.props.whatever.data);
}
componentWillReceiveProps(nextProps) {
if (this.props.whatever.myStatus !== nextProps.whatever.myStatus) {
// Load your data/state (any page change)
nextProps.loadMyData(nextProps.whatever.data);
}
}
render() {
// Render whatever you want here
}
}
componentWillMount
auf dem Berg (Anfangslast) auslösen, und componentWillReceiveProps
löst zumindest jedes Mal Ihre Requisiten ändern.
Was genau möchten Sie tun, um die Komponente erneut ausführen zu müssen? – erichardson30
Jede Seite verwendet den gleichen Komponententyp und verhält sich entsprechend den Daten der URL. –