【发布时间】:2019-10-30 03:06:44
【问题描述】:
我查看了在 React 中使用 onSubmit 函数的多个来源,它们总是将 onSubmit 触发器作为 Form 属性放置,就像这样
import React, { Component } from "react";
import { connect } from "react-redux";
import PropTypes from "prop-types";
import { register } from "../../../actions/auth/auth.action";
import { Container } from "react-bootstrap";
import {
Button,
Form,
Label,
Input,
} from "reactstrap";
class Register extends Component {
state = {
fname: "",
lname: "",
email: "",
password: ""
};
static propTypes = {
register: PropTypes.func.isRequired
};
handleChange = e => {
this.setState({
[e.target.name]: e.target.value
});
};
handleSubmit = e => {
e.preventDefault();
const { fname, lname, email, password } = this.state;
const newUser = {
name: {
first: fname,
last: lname
},
email: {
address: email
},
password
};
// Attempt to register user
this.props.register(newUser);
};
render() {
return(
<Form onSubmit={this.handleSubmit}>
<Label for="fname">First Name</Label>
<Input
type="text"
name="fname"
id="fname"
placeholder="Enter first name"
className="mb-3"
onChange={this.handleChange}
/>
<Label for="lname">Last Name</Label>
<Input
type="text"
name="lname"
id="lname"
placeholder="Enter last name"
className="mb-3"
onChange={this.handleChange}
/>
<Label for="email">Email</Label>
<Input
type="email"
name="email"
id="email"
placeholder="Enter email"
className="mb-3"
onChange={this.handleChange}
/>
<Label for="password">Password</Label>
<Input
type="password"
name="password"
id="password"
placeholder="Enter password"
className= "mb-3"
onChange={this.handleChange}
/>
<Button color="primary" style={{ marginTop: "2rem" }} block>
Register
</Button>
</Form>
);
};
};
const mapStateToProps = state => ({
error: state.error
});
export default connect(
mapStateToProps,
{ register }
)
(Register);
但是,当我尝试这样做时,无法调用该函数。 (即,当调用是表单属性时,按钮如何“知道”何时调用 onSubmit 函数)我什至尝试向按钮添加 type="submit" 属性,但这也不起作用。
【问题讨论】:
-
这看起来像一个自定义的
Button组件。你用的是什么库? -
抱歉含糊不清 - 我添加了导入的库
-
嗯,看起来 reactstrap
Form组件没有 onSubmit 属性。您是否尝试过将onClick用于Register按钮? -
是的,这似乎也不起作用。
-
完整代码有助于找出问题