Ich arbeite daran, React + ReactRouter zu lernen, um ein mehrstufiges Formular zu erstellen. Ich habe das Beispiel hier funktioniert: https://www.viget.com/articles/building-a-multi-step-registration-form-with-reactWie man ein reaktives mehrstufiges Formular mit React Router arbeiten lässt
Das Problem ist dieses Beispiel verwendet nicht ReactRouter, also die URL ändert sich nie während des Formulars. Der Autor erwähnt "Sie könnten jeden Schritt auf eine benutzerdefinierte Route einstellen", aber ich konnte nicht herausfinden, wie das funktioniert. Wie können Sie den aktuellen Renderprozess aktualisieren, um mit ReactRouter zu arbeiten? Alle Hinweise geschätzt. Dank
render: function() {
switch (this.state.step) {
case 1:
return <AccountFields fieldValues={fieldValues}
nextStep={this.nextStep}
saveValues={this.saveValues} />
case 2:
return <SurveyFields fieldValues={fieldValues}
nextStep={this.nextStep}
previousStep={this.previousStep}
saveValues={this.saveValues} />
case 3:
return <Confirmation fieldValues={fieldValues}
previousStep={this.previousStep}
submitRegistration={this.submitRegistration} />
case 4:
return <Success fieldValues={fieldValues} />
}
}
Ich habe versucht:
render: function() {
switch (this.state.step) {
case 1:
return <AccountFields fieldValues={fieldValues}
nextStep={this.nextStep}
saveValues={this.saveValues} />
case 2:
browserHistory.push('/surveyfields')
case 3:
browserHistory.push('/confirmation')
case 4:
browserHistory.push('/success')
}
}
AKTUALISIERT
..
case 2:
<Route path="/surveyfields" component={SurveyFields}/>
..
var Welcome = React.createClass({
render() {
return (
<Router history={browserHistory}>
<Route path='/welcome' component={App}>
<IndexRoute component={Home} />
<Route path='/stuff' component={Stuff} />
<Route path='/features' component={Features} />
<Route path='/surveyfields' component={SurveyFields} />
</Route>
</Router>
);
}
});
Danke. Ich änderte 'browserHistory.push ('/ surveyfields')' in ' ' - Während das lädt die React-Komponente SurveyFields, ändert es nicht die URL, die meine ist Ziel mit Benutzung reagiere Router ... Warum ändert sich die Routen-URL nicht? AKTUALISIERT über –
AnApprentice
Sie sollten den Status oder die URL innerhalb einer Rendermethode nicht ändern, stellen Sie sich eine Endlosschleife vor, wenn Sie den Status ändern, einen Render auslösen, der wiederum den Status ändert ... Ich würde den URL-Status in der Methode this.saveValues – aitchnyu
ändern Und verwenden Sie Route nur im Router. Wenn Sie sie an anderer Stelle einfügen, ist das Verhalten nicht definiert. Also 'Fall 2: return ' –
aitchnyu