Я использую редукс, редукс-форму и реагирую. Я заполняю поля формы, отправляю ее, а затем хочу отобразить введенные значения в компоненте Result.
Result.jsx
import React from 'react';
import { connect } from 'react-redux';
const Result = props => {
console.log(props);
return (
<div>
test
</div>
);
};
const mapStateToProps = state => {
return {
formData: state.form
};
}
export default connect(mapStateToProps)(Result);
РЕДАКТИРОВАТЬ:
import React, { Component } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import { Provider } from 'react-redux';
import store from './state/store';
import MainForm from './containers/MainForm';
import Result from './components/Result';
class App extends Component {
render() {
return (
<Provider store={store}>
<BrowserRouter>
<div>
<Route path="/" component={MainForm} exact />
<Route path="/submitted" component={Result} />
</div>
</BrowserRouter>
</Provider>
);
}
}
export default App;
EDIT2:
class MainForm extends Component {
state = {
submit: false
};
handleSubmit = data => {
this.setState({ submit: true });
};
render() {
const { handleSubmit, pristine, submitting, reset } = this.props;
const { submit } = this.state;
if (submit) {
return <Redirect to="/submitted" />;
}
return (
<Wrapper>
<h2>Some header</h2>
<FormWrapper onSubmit={handleSubmit(this.handleSubmit)}>
// FORM FIELDS..
<Button variant="contained" color="primary" type="submit" disabled={submitting}>
Submit
</Button>
<Button variant="contained" disabled={pristine || submitting} onClick={reset}>
Clear Values
</Button>
</FormWrapper>
</Wrapper>
);
}
}
MainForm = reduxForm({
form: 'main'
})(MainForm);
export default MainForm;
I console.log
реквизит, чтобы проверить его значение. Это уволено дважды. Первый раз, когда реквизит содержит значения формы, на которые я надеялся в props.formData.main.values
. Поэтому я предполагаю, что mapStateToProps работал нормально. Но затем console.log
срабатывает во второй раз, а props.formData
- пустой объект. Я также использую расширение Redux Chrome и ясно вижу, что после отправки формы данные в хранилище стираются.
Может ли кто-нибудь объяснить мне это поведение и как я могу это исправить? Спасибо.