【发布时间】:2020-05-13 05:01:26
【问题描述】:
是否可以在 React 中使用常规按钮组件上的点击事件来触发点击隐藏的表单提交按钮/提交所有表单值和更新索引不变的表单?
我有一个包含一系列步骤(如向导)的应用程序,并且每个步骤中的表单都有自己的隐藏提交按钮。当ButtonNext(和最后一步的ButtonFinal)被点击时,有没有办法触发点击隐藏的表单提交按钮,以便onSubmit运行,然后将表单值和索引值发送到@ 987654324@函数?
我可能可以使用data-key 属性访问隐藏的提交按钮。
编辑:ButtonNext 和 ButtonFinal 是 DOM 中表单的直接兄弟,不能添加到表单中。
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
【问题讨论】:
标签: javascript reactjs forms