react高阶组件封装登录注册输入框

./form.js文件

import React from 'react'


export default function imoocForm(Comp){
	return class WrapperComp extends React.Component{
		constructor(props){
			super(props)
			this.state = {}
			this.handleChange = this.handleChange.bind(this)
		}
		handleChange(key,val){
			console.log(key,val)
			this.setState({
				[key]:val
			})
		}
		render(){
			return <Comp handleChange={this.handleChange} state={this.state} {...this.props}></Comp>
		}
	}
}

在login.js文件中引入imoocForm


import imoocFrom from '../../component/imooc-form/imooc-form.js'

@imoocFrom
class Login extends React.Component{
	handleLogin(){
		//拿到的就是登录输入框信息
		console.log(this.props.state)
	}
	render(){
		return (
			<div>
				<List>
					<InputItem
						onChange={v=>this.props.handleChange('user',v)}
					>用户</InputItem>
					<WhiteSpace />
					<InputItem
						onChange={v=>this.props.handleChange('pwd',v)}
						type='password'
					>密码</InputItem>
				</List>
				<WhiteSpace />
				<Button onClick={this.handleLogin} type='primary'>登录</Button>
				<WhiteSpace />
			</div>
		)
	}
}

export default Login

在register.js文件中引入imoocForm

import imoocForm from '../../component/imooc-form/imooc-form'

@imoocForm
class Register extends React.Component{
	componentDidMount(){
		//默认初始化选中牛人
		this.props.handleChange('type','genius')
	}
	handleRegister(){
		//拿到的就是注册输入框信息
		console.log(this.props.state)
	}
	render(){
		const RadioItem = Radio.RadioItem
		return (
			<div>
				<List>
					<InputItem
						onChange={v=>this.props.handleChange('user',v)}
					>用户名</InputItem>
					<WhiteSpace />
					<InputItem
						type='password'
						onChange={v=>this.props.handleChange('pwd',v)}
					>密码</InputItem>
					<WhiteSpace />
					<InputItem
						type='password'
						onChange={v=>this.props.handleChange('repeatpwd',v)}
					>确认密码</InputItem>
					<WhiteSpace />
					<RadioItem
						checked={this.props.state.type=='genius'}
						onChange={()=>this.props.handleChange('type','genius')}
					>
						牛人
					</RadioItem>
					<RadioItem
						checked={this.props.state.type=='boss'}
						onChange={()=>this.props.handleChange('type','boss')}
					>
						BOSS
					</RadioItem>
					<WhiteSpace />
					<Button type='primary' onClick={this.handleRegister}>注册 </Button>
				</List>
			</div>
		)
	}
}

export default Register
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值