Reactjs 将redux状态映射到道具-状态被清除?

Reactjs 将redux状态映射到道具-状态被清除?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我正在使用redux,redux表单和react。我填写表单字段,提交表单,然后在结果组件中显示输入的值 Result.jsx import React from 'react'; import { connect } from 'react-redux'; const Result = props => { console.log(props); return ( <div> test </div> ); }; const

我正在使用redux,redux表单和react。我填写表单字段,提交表单,然后在结果组件中显示输入的值

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);
从“React”导入React;
从'react redux'导入{connect};
const Result=props=>{
控制台日志(道具);
返回(
测试
);
};
常量mapStateToProps=状态=>{
返回{
formData:state.form
};
}
导出默认连接(MapStateTops)(结果);
编辑:

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;
import React,{Component}来自'React';
从“react router dom”导入{BrowserRouter,Route};
从'react redux'导入{Provider};
从“./state/store”导入存储;
从“/containers/MainForm”导入MainForm;
从“./components/Result”导入结果;
类应用程序扩展组件{
render(){
返回(
);
}
}
导出默认应用程序;
编辑2:

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;
类MainForm扩展组件{
状态={
提交:假
};
handleSubmit=数据=>{
this.setState({submit:true});
};
render(){
const{handleSubmit,pristine,submiting,reset}=this.props;
const{submit}=this.state;
如果(提交){
返回;
}
返回(
某个标题
//表单字段。。
提交
明确的价值观
);
}
}
MainForm=reduxForm({
表格:'主要'
})(主表格);
导出默认主窗体;
I
console.log
检查道具的值。它被炒了两次。第一次道具包含我希望在
props.formData.main.values
下包含的表单值。因此,我假设MapStateTrops工作正常。但是,
console.log
第二次被激发,并且
props.formData
是一个空对象。我还使用了ReduxChrome扩展,我可以清楚地看到,表单提交后,存储中的数据将被删除


有人能向我解释一下这种行为吗?我怎样才能纠正它?谢谢。

您没有在handler中“消费”提交的数据(在redux存储中保存数据的调度操作?)


可能由于某些原因,表单数据在重定向后被清除,例如重置状态、在下一页/url上不保存新表单的旧数据等。

我已将其修复。Redux表单的默认行为是在卸载表单后丢弃表单数据。要防止这种默认行为,必须将
destroonunmount
设置为
false
,如下所示:

MainForm=reduxForm({
表格:'主要',
destroyOnUnmount:false//默认值为true
})(主表格)


我希望这能帮助有同样问题的人。

使用
结果的组件在哪里?为什么要发射两次,这两次之间有什么区别?我添加了App.jsx。在表单提交后,我只需重定向到
结果
。显示主表单组件的提交/重定向部分在那里。。。