Я пытаюсь создать компонент React, который может создавать или редактировать существующий элемент в моей базе данных. Все работает нормально, кроме одного: когда я вызываю маршрут new
из маршрута edit
(тот же компонент с другим поведением), React просто сохраняет предыдущее состояние формы, и я не вижу новую форму с пустыми данными. Это работает только тогда, когда я вызываю маршрут new
откуда-то еще.
Возможные маршруты:
/bastions/new
— визуализирует компонент без данных/bastions/:id
— визуализирует компонент с существующими данными
Эта проблема кому-то знакома?
Просто некоторый код, чтобы сделать вещи чище (с наиболее соответствующими мирами):
Заранее спасибо.
class BastionForm extends Component {
componentWillMount() {
if(this.props.bastion.number) {
this.props.fetchBastion(this.props.params.number);
}
}
renderField({ input, label, type, meta: { touched, error, warning } }) {
return (
<FormGroup controlId={label} {...validation}>
<ControlLabel>{label}</ControlLabel>
<FormControl {...input} placeholder={label} type={type} />
<FormControl.Feedback />
</FormGroup>
);
}
render() {
const { handleSubmit, pristine, reset, submitting } = this.props;
return (
<form onSubmit={handleSubmit(this.onSubmit.bind(this)) }>
<h3>Create a new Bastion</h3>
<Field name="sample" type="text" component={this.renderField} />
<ButtonToolbar>
<Button bsStyle="primary" disabled={submitting}>Submit</Button>
</ButtonToolbar>
</form>
);
}
}
BastionForm = reduxForm({
form: 'BastionForm',
enableReinitialize: true
})(BastionForm);
BastionForm = connect(
state => ({
initialValues: state.bastions.bastion
}), { fetchBastion }
)(BastionForm);
export default BastionForm;