React - Redux-Form 远程提交
React - Redux-Form Remote Submit
我正在尝试使用 redux-forms 远程提交表单。我的问题是,如何从组件外部的函数执行 redux 操作。等价于说:
this.props.action(params);
我的代码如下:
async function submit(values) {
return (
//Equivalent of => this.props.addOne(values.name)
await actions.addOne(values.name, 60)
)
}
const renderTextField = ({ input, label, meta: { touched, error } }) =>
<TextField
autoFocus
margin="dense"
fullWidth
type="text"
label={label}
{...input}
/>
class LibrarySubsectionForm extends React.Component {
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit}>
<Field
component={renderTextField}
name="name"
label="Subsection Name"
/>
</form>
)
}
}
export default compose(
connect(null, actions),
reduxForm({ form: 'AddSubsection', onSubmit: submit })
)(LibrarySubsectionForm);
Redux-form 将装饰组件的 dispatch
函数和 props
作为 onSubmit
处理程序的第二个和第三个参数传递。所以基本上你可以在你的 submit
函数中访问它们。如果您将 actions
作为道具传递给 LibrarySubsectionForm
那么您可以在 submit
函数中访问它们:
async function submit(values, dispatch, props) {
return await props.actions.addOne(values.name, 60);
}
我正在尝试使用 redux-forms 远程提交表单。我的问题是,如何从组件外部的函数执行 redux 操作。等价于说:
this.props.action(params);
我的代码如下:
async function submit(values) {
return (
//Equivalent of => this.props.addOne(values.name)
await actions.addOne(values.name, 60)
)
}
const renderTextField = ({ input, label, meta: { touched, error } }) =>
<TextField
autoFocus
margin="dense"
fullWidth
type="text"
label={label}
{...input}
/>
class LibrarySubsectionForm extends React.Component {
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={handleSubmit}>
<Field
component={renderTextField}
name="name"
label="Subsection Name"
/>
</form>
)
}
}
export default compose(
connect(null, actions),
reduxForm({ form: 'AddSubsection', onSubmit: submit })
)(LibrarySubsectionForm);
Redux-form 将装饰组件的 dispatch
函数和 props
作为 onSubmit
处理程序的第二个和第三个参数传递。所以基本上你可以在你的 submit
函数中访问它们。如果您将 actions
作为道具传递给 LibrarySubsectionForm
那么您可以在 submit
函数中访问它们:
async function submit(values, dispatch, props) {
return await props.actions.addOne(values.name, 60);
}