如何处理表单子组件中的按钮
How to handle buttons in child components of a Form
我有这个组件:
class ConnectedStepsForm extends React.Component {
handleSubmit = event => {
event.preventDefault()
debugger
//Here is where i am.
}
render() {
return (
<React.Fragment>
<p>Datos personales: Paso {this.props.step}</p>
<form onSubmit={this.handleSubmit}>
<Step1 />
<Step2 />
<Step3 />
<TabNavButton />
</form>
</React.Fragment>
)
}
}
这是父组件,一个简单的多步组件。
在我的第 3 步中,我有一个添加动态字段的按钮。所以我使用这个按钮来添加这些字段。问题是当我点击那个按钮时。出于某种原因,它从父级调用 handleSubmit 事件。
handleSubmit = event => {
event.preventDefault()
alert('it works')
}
render(){
if (this.props.step !== 3) {
return null
}
return(
<React.Fragment>
{/* Se puede utilizar conditional rendering para cambiar la funcionalidad del boton */}
<button onClick={this.addField} onSubmit={this.handleSubmit}>Añadir Contacto</button>
...
但是,它并没有像我预期的那样工作,它从来没有向我显示来自子项中的 handleSubmit 的警报。这还不是最糟糕的部分,我在步骤 3 class 中有另一种方法用于添加项目,现在我无法访问它...
addItem = event => {
event.preventDefault()
debugger //I want to be here!!
this.setState((prevState) => {
return {list: [...prevState.list, {red:"", name:""}]}
});
}
有什么想法吗??
按钮没有 onSubmit
处理程序,因此将调用提供给表单 onSubmit
属性的函数。
您可以将处理程序更改为 onClick
,并将按钮类型从默认的 submit
更改为 button
,提交处理程序将不会被调用。
<button type="button" onClick={this.addField}>
Añadir Contacto
</button>
我有这个组件:
class ConnectedStepsForm extends React.Component {
handleSubmit = event => {
event.preventDefault()
debugger
//Here is where i am.
}
render() {
return (
<React.Fragment>
<p>Datos personales: Paso {this.props.step}</p>
<form onSubmit={this.handleSubmit}>
<Step1 />
<Step2 />
<Step3 />
<TabNavButton />
</form>
</React.Fragment>
)
}
}
这是父组件,一个简单的多步组件。
在我的第 3 步中,我有一个添加动态字段的按钮。所以我使用这个按钮来添加这些字段。问题是当我点击那个按钮时。出于某种原因,它从父级调用 handleSubmit 事件。
handleSubmit = event => {
event.preventDefault()
alert('it works')
}
render(){
if (this.props.step !== 3) {
return null
}
return(
<React.Fragment>
{/* Se puede utilizar conditional rendering para cambiar la funcionalidad del boton */}
<button onClick={this.addField} onSubmit={this.handleSubmit}>Añadir Contacto</button>
...
但是,它并没有像我预期的那样工作,它从来没有向我显示来自子项中的 handleSubmit 的警报。这还不是最糟糕的部分,我在步骤 3 class 中有另一种方法用于添加项目,现在我无法访问它...
addItem = event => {
event.preventDefault()
debugger //I want to be here!!
this.setState((prevState) => {
return {list: [...prevState.list, {red:"", name:""}]}
});
}
有什么想法吗??
按钮没有 onSubmit
处理程序,因此将调用提供给表单 onSubmit
属性的函数。
您可以将处理程序更改为 onClick
,并将按钮类型从默认的 submit
更改为 button
,提交处理程序将不会被调用。
<button type="button" onClick={this.addField}>
Añadir Contacto
</button>