【发布时间】:2018-03-15 19:38:01
【问题描述】:
我有一个 Redux 表单中的 FieldArray,我将对象推送到这个数组中,然后我有一个回调来触发一个函数来发出 POST 请求。
当我提交表单时,我得到了旧值,因为 Redux 表单的 push() 方法是来自 redux 的异步调度。
// Parent component
<FieldArray
name="myObjects"
component={ChildComponent}
onSubmitObjects={this.onSubmit} />
// Function
onSubmit = async () => {
const { getFormValues } = this.props;
const data = {
myObjects: getFormValues.myObjects
}
try {
// const contact = await Service.updateUser(data);
} catch (e) {
console.log(e)
}
}
我需要在 push 方法之后提交带有添加到数组中的新值的表单。
// Function inside ChildComponent
addNewObject = () => {
const { fields, onSubmitObjects} = this.props;
fields.push({
number: 1,
name: 'Foo',
});
if (onSubmitObjects) {
onSubmitObjects(); // cb() to trigger a function in the parent component
}
}
有没有办法在 push 方法之后使用新值调用回调?
【问题讨论】:
-
codesandbox.io/s/6wxz7437rk 如果你使用 Redux-form 中的
FieldArray,我不认为它们是onSubmitObjects的道具。你能澄清问题吗? -
@FisNaN 我必须创建此回调,因为我没有使用 handleSubmit 道具提交表单。当我点击一个按钮时,我必须推送数组中的对象并使用这个新数组调用 API
标签: javascript reactjs redux redux-form