Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用Redux表单,如何从ReduxFormField onChange事件进行调度?_Reactjs_Redux_Redux Form_Recompose - Fatal编程技术网

Reactjs 使用Redux表单,如何从ReduxFormField onChange事件进行调度?

Reactjs 使用Redux表单,如何从ReduxFormField onChange事件进行调度?,reactjs,redux,redux-form,recompose,Reactjs,Redux,Redux Form,Recompose,我得到以下错误: 未定义“分派”无未定义 我试图做到的是,每当用户选择一个ReduxFormField单选按钮时,表单就会自动提交 从onReduxFormFieldChange进行调度的正确方法是什么 ... import { Field as ReduxFormField, reduxForm, } from 'redux-form'; import { compose } from 'recompose'; ... class MyFormRadioInputs extends

我得到以下错误:

未定义“分派”无未定义

我试图做到的是,每当用户选择一个ReduxFormField单选按钮时,表单就会自动提交

从onReduxFormFieldChange进行调度的正确方法是什么

...
import {
  Field as ReduxFormField,
  reduxForm,
} from 'redux-form';
import { compose } from 'recompose';
...

class MyFormRadioInputs extends React.Component {
  onReduxFormFieldChange = (e, newValue, previousValue) => {
  if (newValue) {
    dispatch(submit(MYFORM));
  }

  render() {
    const { MyItems } = this.props;
    return MyItems.map((item) => (
        <ReduxFormField
          key={item.id}
          name="MyItemId"
          type="radio"
          value={item.id}
          label={item.title}
          onChange={this.onReduxFormFieldChange}
        />
    ));
  }

}

const withForm = compose(
  reduxForm({
    form: MYFORM,
    ...
  })
);

const MyForm = (props) => (
    <Form>
        <MyFormRadioInputs
          myItems={props.myItems}
        />
    </Form>
);

MyForm.propTypes = {
  myItems: PropTypes.shape....    
};

export default withForm(MyForm);
。。。
进口{
字段作为ReduxFormField,
reduxForm,
}来自“redux形式”;
从“重新组合”导入{compose};
...
类MyFormRadioInputs扩展了React.Component{
onReduxFormFieldChange=(e,newValue,previousValue)=>{
如果(新值){
发送(提交(MYFORM));
}
render(){
const{MyItems}=this.props;
返回MyItems.map((项目)=>(
));
}
}
const with form=compose(
红肿({
表格:MYFORM,
...
})
);
常量MyForm=(道具)=>(
);
MyForm.propTypes={
myItems:PropTypes.shape。。。。
};
导出默认withForm(MyForm);

您正在将组件连接到redux表单,但您从未将组件连接到redux存储,这意味着您无法分派操作(包括redux表单操作,如
提交

我以前没有使用过
recocompose
,因此我不确定您是否/如何通过它获得dispatch,但使用standard react redux,您需要在文件底部添加如下内容:

const mapDispatchToProps = dispatch => ({ submit: (formName) => dispatch(submit(formName))});

export default connect(null, mapDispatchToProps)(withForm(MyForm));
然后组件的
onReduxFormFieldChange
实现变成:

onReduxFormFieldChange  = (e, newValue, previousValue) => {
    if (newValue) {
        this.props.submit(MYFORM);
    }
}