react-ant design:form表单组件 登陆注册功能简版方案参考
登录注册使用form
步骤:
1引入:import { Form, Input, Button, Checkbox } from 'antd';
2:使用:
const onFinishFailed = errorInfo => {//错误的提示 console.log('Failed:', errorInfo); }; class Login extends React.Component{ onFinish = values => {//成功的提示 console.log('Success:', values); this.setState({ name:values.username, password:values.password }) }; } render(){ return( <div> <div style={sectionStyle}> {/* form */} <div className="formBox"> form:{this.state.name} password:{this.state.password} <Form {...layout} name="basic" initialValues={{ remember: true }} onFinish={this.onFinish} onFinishFailed={onFinishFailed} > <Form.Item label="Username" name="username" rules={[{ required: true, message: '请输入用户名!' }]} > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[{ required: true, message: '请输入密码!' }]} > <Input.Password /> </Form.Item> <Form.Item {...tailLayout}> <Button type="primary" onClick={this.fnLogin} htmlType="submit"> 登录 </Button> </Form.Item> </Form> </div> </div> </div> ) }
3:说明:
插件中提交表单是绑定在两个对象函数上的
成功后的:onFinish对象函数
失败后的:onFinishFailed对象函数
导致如果想要做业务逻辑一般都是在onfinish的上比如成功后储存和跳转
但是不能设置state:state不在class内
想要把密码用户名设置在state组件状态上要把原框架改成上面onFinish
既放在class创建组件内,并添加在onFinish内添加setState,注意setState要把onFinish的完成的values值是对象所以要结构出来分开设置不然会报错
这时候state设置就可完成并且能在点击后组件内做相关逻辑比如跳转
form:{this.state.name}//可以获取到state值了
password:{this.state.password}
也可以直接在onFinish内做跳转和相关逻辑了:此时onFinish属于组件内对象
代码:
import './login.less'; import React from 'react'; import Background from '../../img/bg.jpg' import { Form, Input, Button, Checkbox, message } from 'antd'; const sectionStyle = { width: "100%", height: '93.2vh', backgroundImage: `url(${Background})` , paddingTop:'26vh' } const layout = { // labelCol: { span: 4 }, // wrapperCol: { span: 4 }, }; const tailLayout = { // wrapperCol: { offset: 0, span: 10 }, }; const onFinishFailed = errorInfo => {//错误的提示 console.log('Failed:', errorInfo); }; class Login extends React.Component{ // formRef = React.createRef(); constructor(props){ super(props) this.state={ } } LoginPass(){//验证并成功跳转 console.log('验证中。。。',this.state.name,this.state.password) if(this.state.name!=='123'||this.state.password!=='123'){ message.error('用户名或密码错误,请重新登录!') return } message.success('登录成功',0.7,()=>{ this.props.history.push('/home') }) } onFinish = values => {//成功的提示 console.log('Success:', values); this.setState({ name:values.username, password:values.password }) this.LoginPass() }; render(){ return( <div> <div style={sectionStyle}> {/* form */} <div className="formBox"> {/* form:{this.state.name} */} {/* password:{this.state.password} */} <Form {...layout} name="basic" initialValues={{ remember: true }} onFinish={this.onFinish} onFinishFailed={onFinishFailed} > <Form.Item label="Username" name="username" rules={[{ required: true, message: '请输入用户名!' }]} > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[{ required: true, message: '请输入密码!' }]} > <Input.Password /> </Form.Item> <Form.Item {...tailLayout}> <Button type="primary" onClick={this.fnLogin} htmlType="submit"> 登录 </Button> </Form.Item> </Form> </div> </div> </div> ) } } export default Login;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!