render() {const {values,handleSubmit,handleChange,handleBlur,errors,touched} = this.props// console.log(values)return (<div className={}>{/* 顶部导航 */}<NavBar className={styles.navHeader} mode="dark">账号登录</NavBar><WhiteSpace size="xl" />{/* 登录表单 */}<WingBlank><form onSubmit={handleSubmit}><div className={styles.formItem}><inputonBlur={handleBlur}value={values.username}className={styles.input}name="username"placeholder="请输入账号"onChange={handleChange}/></div>{/* 长度为5到8位,只能出现数字、字母、下划线 */}{touched.username && errors.username && (<div className={}>{errors.username}</div>)}<div className={styles.formItem}><inputvalue={values.password}onBlur={handleBlur}onChange={handleChange}className={styles.input}name="password"type="password"placeholder="请输入密码"/></div>{/* 长度为5到12位,只能出现数字、字母、下划线 */}{touched.password && errors.password && (<div className={}>{errors.password}</div>)}{/* <div className={}>账号为必填项</div> */}<div className={styles.formSubmit}><buttonclassName={styles.submit}type="submit"onSubmit={this.handleLogin}>登 录</button></div></form><Flex className={styles.backHome}><Flex.Item><Link to="/registe">还没有账号,去注册~</Link></Flex.Item></Flex></WingBlank></div>)}
export default withFormik({mapPropsToValues: () => ({ username: '', password: '' }),validationSchema: yup.object().shape({username: yup.string().required('账号为必填项').matches(REG_UNAME, '长度为5~8位,字母数字下划线'),password: yup.string().required('密码为必填项').matches(REG_PWD, '密码长度为5~12位字母数字下划线')}),handleSubmit: async (values, formikBag) => {const { username, password } = valuesconst res = await axios.post(`localhost:8080/user/login`, {username,password})// console.log(res)const { status, body, description } = res.dataif (status === 200) {window.localStorage.setItem('token', ken)formikBag.props.history.push('/')} else {Toast.info(description, 1)}}
})(Login)
表单验证流程
validationSchema: yup.object().shape({username: yup.string().required('用户名不能为空').matches(REG_UNAME, '用户名必须是5-8个字符(字符、数字或者下划线)'),password: yup.string().required('用户名不能为空').matches(REG_PWD, '用户名必须是5-12个字符(字符、数字或者下划线)')
})
{touched.password && errors.password && <div className={}>{errors.password}</div>}
本文发布于:2024-01-30 21:41:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662207523023.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |