Хотя я думаю, что форма logi c немного «сложна», вы можете использовать data
, возвращенный из onSubmit
, чтобы передать значения обратно в вашу getForm()
функцию.
const App = () => {
// Create a new `state`
const [formValues, setFormValue] = useState({})
//...
const onSubmit = data => {
//...
// assign the form data to the 'formValues' state
setFormValue(data)
}
return (
<form onSubmit={handleSubmit(onSubmit)} noValidate>
{!state
? getForm(forgetPasswordConfig, register, errors)
: getForm(
forgetPasswordAfterSendingOtpConfig,
register,
errors,
formValues // pass back the values
)}
</form>
)
}
Затем поймайте такие значения:
export const getForm = (config, register, errors, formValues) => {
// Based on `state`, formValues will be available and filled after the user clicks on
// the first button "Send OTP" and so, you can get the field value by its name "msisdn"
case "link":
return (
<div className="form-group" key={index}>
<p className="user-link">
<span onClick={() => console.log(formValues.msisdn)}> {label}</span>
</p>
</div>
)
}