反应注册表单中的混合有效负载数据字段
mixed payload data fields in react signup form
我真的很新手
我创建了一个注册表单,但是当发布数据时,值是混合的
我创建了 onchange 和 onsubmit 来跟踪更改并将其提交到后端服务器
但是我得到了 badrequest 因为值在 payload
中混合了
const Signup = ({ signup, isAuthenticated }) => {
const [accountCreated, setAccountCreated] = useState(false);
const [formData, setFormData] = useState({
username: "",
password: "",
email: "",
first_name: "",
last_name: "",
profile_type: "",
});
const { username, password, email, first_name, last_name, profile_type } = formData;
const onChange = (e) => setFormData({ ...formData, [e.target.name]: e.target.value });
const onSubmit = (e) => {
e.preventDefault();
signup(username, password, email, first_name, last_name, profile_type);
setAccountCreated(true);
};
if (isAuthenticated) {
return <Redirect to="/" />;
}
if (accountCreated) {
return <Redirect to="/login" />;
}
return (
<div className="container mt-5">
<h1>Sign Up</h1>
<p>Create your Account</p>
<form onSubmit={(e) => onSubmit(e)}>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="Username"
name="username"
value={username}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="password"
placeholder="Password"
name="password"
value={password}
onChange={(e) => onChange(e)}
minLength="6"
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="email"
placeholder="Email*"
name="email"
value={email}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="First Name*"
name="first_name"
value={first_name}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="Last Name*"
name="last_name"
value={last_name}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<select
className="form-control"
name="profile_type"
onChange={(e) => onChange(e)}
required
>
<option value="">--------</option>
<option value="STD">
Student
</option>
<option value="PRF">
Professor
</option>
</select>
</div>
<button className="btn btn-primary" type="submit">
Register
</button>
</form>
<p className="mt-3">
Already have an account? <Link to="/login">Sign In</Link>
</p>
</div>
);
};
const mapStateToProps = (state) => ({
isAuthenticated: state.auth.isAuthenticated,
});
export default connect(mapStateToProps, { signup })(Signup);
当我提交时,这就是我在有效载荷中得到的
所有值混合但电子邮件和个人资料类型正确
我该如何解决这个问题?
{username: "lastname", password: "firstname", email: "email@mail.com", first_name: "username1",…}
email: "email@mail.com"
first_name: "username1"
last_name: "Password"
password: "firstname"
profile_type: "STD"
username: "lastname"
变成这样
{username: "username1", password: "Password", email: "email@mail.com", first_name: "firstname",…}
email: "email@mail.com"
first_name: "firstname"
last_name: "lasttname"
password: "Password"
profile_type: "STD"
username: "username1"
尝试检查注册方法中的参数顺序.. 或在每个输入的 onChange 方法中尝试此代码 (e) => setFormData({...formData, property name: e.target.value})
。
我真的很新手 我创建了一个注册表单,但是当发布数据时,值是混合的 我创建了 onchange 和 onsubmit 来跟踪更改并将其提交到后端服务器 但是我得到了 badrequest 因为值在 payload
中混合了const Signup = ({ signup, isAuthenticated }) => {
const [accountCreated, setAccountCreated] = useState(false);
const [formData, setFormData] = useState({
username: "",
password: "",
email: "",
first_name: "",
last_name: "",
profile_type: "",
});
const { username, password, email, first_name, last_name, profile_type } = formData;
const onChange = (e) => setFormData({ ...formData, [e.target.name]: e.target.value });
const onSubmit = (e) => {
e.preventDefault();
signup(username, password, email, first_name, last_name, profile_type);
setAccountCreated(true);
};
if (isAuthenticated) {
return <Redirect to="/" />;
}
if (accountCreated) {
return <Redirect to="/login" />;
}
return (
<div className="container mt-5">
<h1>Sign Up</h1>
<p>Create your Account</p>
<form onSubmit={(e) => onSubmit(e)}>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="Username"
name="username"
value={username}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="password"
placeholder="Password"
name="password"
value={password}
onChange={(e) => onChange(e)}
minLength="6"
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="email"
placeholder="Email*"
name="email"
value={email}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="First Name*"
name="first_name"
value={first_name}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<input
className="form-control"
type="text"
placeholder="Last Name*"
name="last_name"
value={last_name}
onChange={(e) => onChange(e)}
required
/>
</div>
<div className="form-group">
<select
className="form-control"
name="profile_type"
onChange={(e) => onChange(e)}
required
>
<option value="">--------</option>
<option value="STD">
Student
</option>
<option value="PRF">
Professor
</option>
</select>
</div>
<button className="btn btn-primary" type="submit">
Register
</button>
</form>
<p className="mt-3">
Already have an account? <Link to="/login">Sign In</Link>
</p>
</div>
);
};
const mapStateToProps = (state) => ({
isAuthenticated: state.auth.isAuthenticated,
});
export default connect(mapStateToProps, { signup })(Signup);
当我提交时,这就是我在有效载荷中得到的 所有值混合但电子邮件和个人资料类型正确 我该如何解决这个问题?
{username: "lastname", password: "firstname", email: "email@mail.com", first_name: "username1",…}
email: "email@mail.com"
first_name: "username1"
last_name: "Password"
password: "firstname"
profile_type: "STD"
username: "lastname"
变成这样
{username: "username1", password: "Password", email: "email@mail.com", first_name: "firstname",…}
email: "email@mail.com"
first_name: "firstname"
last_name: "lasttname"
password: "Password"
profile_type: "STD"
username: "username1"
尝试检查注册方法中的参数顺序.. 或在每个输入的 onChange 方法中尝试此代码 (e) => setFormData({...formData, property name: e.target.value})
。