html - ReactJs - onClick 似乎不适用于按钮 HTML 标签
问题描述
我的 ReactJs 应用程序中有一段简单的代码:
import React from 'react'
import '../../../assets/styles/authentication/login.css'
import '../../../assets/bootstrap/css/bootstrap.min.css'
import { login } from './login_form_actions.js'
export default class LoginForm extends React.Component {
constructor(props) {
super(props)
this.state = {
email : { email: "" },
password : { password: "" }
}
this.handle_sign_in_click = this.handle_sign_in_click.bind(this)
}
handle_sign_in_click(e) {
console.log(e, this.state.email, this.state.password)
login(this.state.email, this.state.password)
}
render() {
return (
<div className="col-sm-6 col-sm-offset-3 form-box">
<div className="form-auth">
<form className="login-form">
<div className="form-group">
<label className="sr-only" htmlFor="form-username">Email</label>
<input type="text" name="form-username" placeholder="Email..."
className="form-username form-control" id="form-username"
onChange={(event) => this.setState({email:event.target.value})}/>
</div>
<div className="form-group">
<label className="sr-only" htmlFor="form-password">Password</label>
<input type="password" name="form-password" placeholder="Password..."
className="form-password form-control" id="form-password"
onChange={(event) => this.setState({password:event.target.value})}/>
</div>
<button className="btn" onClick={this.handle_sign_in_click}>Sign in!</button>
</form>
</div>
</div>
)
}
}
当我单击Sign In
按钮时,由于某种原因没有任何反应。
我尝试按照其他一些 reactjs 问题(来自 StackOverflow)中的建议绑定handle_sign_in_click,但仍然没有。我在这里缺少什么?(下一步是使用redux来存储auth on success的结果)
谢谢你的帮助
Edit1:控制台和命题
安慰:
react-dom.development.js:22287 下载 React DevTools 以获得更好的开发体验:react-devtools
authentication:1 [DOM] 输入元素应具有自动完成属性(建议:“current-password”):</p>
但是,当我使用 an<a/>
而不是时<button/>
,它确实有效,但我的设计被破坏了(它与按钮时完全一样)
解决方案
以下是如何在 React 中正确处理基本表单(没有 Formik 等库):
import React from 'react';
export default class Form extends React.Component {
state = { email: '', password: '' };
handleChange = event => {
this.setState({ [event.target.name]: event.target.value });
};
handleSubmit = event => {
event.preventDefault();
// login logic here ususally passed down as props from the parent (if not using redux...) so it will be something like this.props.login(...)
this.setState({ email: '', password: '' });
};
render() {
return (
<form onSubmit={this.handleSubmit}>
<input
name="email"
type="text"
onChange={this.handleChange}
placeholder="email"
value={this.state.email}
/>
<input
name="password"
type="text"
onChange={this.handleChange}
placeholder="password"
value={this.state.password}
/>
<input type="submit" />
</form>
);
}
}
推荐阅读
- forms - 颤振,溢出,SingleChildScrollView。这是屏幕内的一个表单,SingleChildScollView Fix 这次对我有用吗?
- python - 图神经网络仅预测二元分类器中的一个值 [Pytorch Geometric]
- node.js - 从过滤器中提取特定信息;
- amazon-web-services - 与云端数据分析(数据清理)相关的成本
- r - 使用矩阵方法在 R 中为 n 参数创建线性回归函数
- android - 在 android Studio 中切换风格时,有人知道如何修复无法识别的(红色)类吗?
- r - 如何使训练数据观察类似于我在 R 中的测试数据?我的观察结果比预期的要少
- wordpress - 如何在 wordpress 中添加元框以附加没有插件的图像?
- r - 在闪亮中使用两个相互依赖的反应物
- jquery - JQuery autcomplete不适用于多个输入字段