Reactjs 使用Redux表单,如何从ReduxFormField onChange事件进行调度?
我得到以下错误: 未定义“分派”无未定义 我试图做到的是,每当用户选择一个ReduxFormField单选按钮时,表单就会自动提交 从onReduxFormFieldChange进行调度的正确方法是什么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
...
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);
}
}