React Final Form 如何在模态按钮中传递表单值?
React Final Form How to pass form values in a modal button?
我将我的表单从 Redux-form 迁移到 react-final-form,除特殊情况外一切顺利。我有一个带有值的表单,当你想保存它时,会打开一个带有两个按钮的模式,一个用于提交表单,另一个用于发送带有表单值的 OTP。
我已遵循文档 How can I trigger a submit from outside my form?
解决方案通过闭包。
但是当我想为函数获取表单值时,我得到了未定义。我解决了这里所有的问题,但似乎没有什么适合我的问题。
这里是我例子的一部分:
<Form
subscription={{ submitting: true, pristine: true }}
destroyOnUmount={false}
enableReinitialize={false}
forceUnregisterOnUnmount={false}
keepDirtyOnReinitialize
onSubmit={onSubmit}
initialValues={initialValues}
FormState
render={({
handleSubmit, values, submitting
}) => {
submit = handleSubmit;
return (
<form onSubmit={handleSubmit} className="edit-device-section">
...
...
...
...
<Modal
show={showModal}
onHide={handleClose}
backdrop="static"
centered
keyboard={false}
className="device-modal"
>
...
...
...
...
<Button
variant="primary"
className="btn-raised otp-btn"
onClick={() => sendSmsOtp(values, 'otp')}
disabled={submitting}
>
{f({ id: 'button.smsOtp' })}
</Button>
)}
<Button
variant="primary"
className="btn-raised execute-btn"
type="submit"
onClick={(event) => {
submit(event);
}}
disabled={submitting}
>
{f({ id: 'button.execute' })}
</Button>
对我应该做什么有什么想法吗?
经过大量研究,我终于找到了解决方案。要访问您的表单值,需要在 render 中传递 form: {getState}
。
<Form
subscription={{ submitting: true, pristine: true }}
destroyOnUmount={false}
enableReinitialize={false}
forceUnregisterOnUnmount={false}
keepDirtyOnReinitialize
onSubmit={onSubmit}
initialValues={initialValues}
FormState
render={({
handleSubmit, values, submitting, form: { getState }
}) => {
并传递 getState().values to your function
:
<Button
onClick={() => functionName(getState().values)}
>
我将我的表单从 Redux-form 迁移到 react-final-form,除特殊情况外一切顺利。我有一个带有值的表单,当你想保存它时,会打开一个带有两个按钮的模式,一个用于提交表单,另一个用于发送带有表单值的 OTP。
我已遵循文档 How can I trigger a submit from outside my form? 解决方案通过闭包。
但是当我想为函数获取表单值时,我得到了未定义。我解决了这里所有的问题,但似乎没有什么适合我的问题。
这里是我例子的一部分:
<Form
subscription={{ submitting: true, pristine: true }}
destroyOnUmount={false}
enableReinitialize={false}
forceUnregisterOnUnmount={false}
keepDirtyOnReinitialize
onSubmit={onSubmit}
initialValues={initialValues}
FormState
render={({
handleSubmit, values, submitting
}) => {
submit = handleSubmit;
return (
<form onSubmit={handleSubmit} className="edit-device-section">
...
...
...
...
<Modal
show={showModal}
onHide={handleClose}
backdrop="static"
centered
keyboard={false}
className="device-modal"
>
...
...
...
...
<Button
variant="primary"
className="btn-raised otp-btn"
onClick={() => sendSmsOtp(values, 'otp')}
disabled={submitting}
>
{f({ id: 'button.smsOtp' })}
</Button>
)}
<Button
variant="primary"
className="btn-raised execute-btn"
type="submit"
onClick={(event) => {
submit(event);
}}
disabled={submitting}
>
{f({ id: 'button.execute' })}
</Button>
对我应该做什么有什么想法吗?
经过大量研究,我终于找到了解决方案。要访问您的表单值,需要在 render 中传递 form: {getState}
。
<Form
subscription={{ submitting: true, pristine: true }}
destroyOnUmount={false}
enableReinitialize={false}
forceUnregisterOnUnmount={false}
keepDirtyOnReinitialize
onSubmit={onSubmit}
initialValues={initialValues}
FormState
render={({
handleSubmit, values, submitting, form: { getState }
}) => {
并传递 getState().values to your function
:
<Button
onClick={() => functionName(getState().values)}
>