React中是否可以使用常规按钮组件的“click”事件来触发隐藏表单提交按钮的单击/提交表单,并保持所有表单值和更新索引的完整性?
我有一个应用程序,其中包含一系列步骤(类似于向导)和每个步骤中都有自己的隐藏提交按钮的表单。当单击“ButtonNext”(最后一步上的“ButtonFinal”)时,是否有一种方法可以触发隐藏表单提交按钮的单击,以便运行“onSubmit”并将表单值和索引值发送到“handleSubmit”函数?
我可能可以使用“data-key”属性访问隐藏的提交按钮。
编辑:在DOM中,“ButtonNext”和“ButtonFinal”是表单的直接同级,并且无法添加到表单中。
我有一个应用程序,其中包含一系列步骤(类似于向导)和每个步骤中都有自己的隐藏提交按钮的表单。当单击“ButtonNext”(最后一步上的“ButtonFinal”)时,是否有一种方法可以触发隐藏表单提交按钮的单击,以便运行“onSubmit”并将表单值和索引值发送到“handleSubmit”函数?
我可能可以使用“data-key”属性访问隐藏的提交按钮。
编辑:在DOM中,“ButtonNext”和“ButtonFinal”是表单的直接同级,并且无法添加到表单中。
import React, { useState } from 'react'
import { Row, Col } from 'react-styled-flexboxgrid'
import { Form, ButtonNext, ButtonPrevious, ButtonFinal } from './style'
const Application = ({ steps }) => {
const [currentStepNum, setCurrentStepNum] = useState(0)
const [previousStepName, setPreviousStepName] = useState(steps[0].step_name)
const [nextStepName, setNextStepName] = useState(steps[1].step_name)
const [formValues, setFormValues] = useState(null)
const handleSubmit = (values, step) => {
setFormValues(values)
setStep(step)
}
const handleClick = (event, step) => {
event.preventDefault()
setStep(step)
}
const setStep = step => {
step = parseInt(step)
setCurrentStepNum(step)
if (step > 0) {
setPreviousStepName(steps[step - 1].step_name)
}
if (step < steps.length - 1) {
setNextStepName(steps[step + 1].step_name)
}
}
return (
<>
<div>
{steps.map((step, index) => {
return (
<div key={index}>
{currentStepNum == index && (
<>
{step.form.length > 0 && (
<Form
action="/"
fields={fields}
onSubmit={(values) => {
handleSubmit(values, [index + 1])
}}
/>
)}
{index > 0 && (
<ButtonPrevious
onClick={event => {
handleClick(event, [index - 1])
}}
>
Back to {previousStepName}
</ButtonPrevious>
)}
{index < steps.length - 1 && (
<ButtonNext
onClick={Trigger onSubmit here}
>
Next: {nextStepName}
</ButtonNext>
)}
{index == steps.length - 1 && (
<ButtonFinal
onClick={Trigger onSubmit here}
>
FINAL SUBMIT BUTTON PLACEHOLDER
</ButtonFinal>
)}
</>
)}
</div>
)
})}
</div>
</>
)
}
export default Application