react基础 - 几个扩展概念

本文介绍了React中的受控组件与非受控组件概念,强调了受控组件在数据管理上的优势。此外,解释了高阶函数的定义,并通过setTimeout和arr.map等示例进行说明。还探讨了函数柯理化的概念,展示了一个利用柯理化简化React事件处理的示例。通过saveFormData函数展示了如何通过柯理化提高代码复用性和可读性。
摘要由CSDN通过智能技术生成

1. 受控组件和非受控组件

***非受控组件:页面中输入类DOM的值,现用现取(几个输入项使用几次ref,所以不建议,效率低)

***受控组件:给输入类DOM绑定onChange事件,随着你的输入,把数据维护到状态里,需要用的时候就把状态里保存的数据去取出来(类比vue中的双向数据绑定)可以省略ref的使用-推荐

2. 高阶函数 

如果一个函数符合下面两个规范中的任意一个,那该函数就是高阶函数

1. 若A函数,接收到的参数是一个函数,那么A就可以称之为高阶函数

2.若A函数,调用后的返回值依然是一个函数,那么A就可以称之为高阶函数

常见的高阶函数:promise,setTimeout,setInterval,arr.map()等等


回顾基础知识:

访问对象中的成员有两种方式:obj.a  或 obj[a]

let a='name'

let obj={}//{name:'tom'}
obj[a]='tom'
console.log(obj)

3. 函数柯理化

通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式

高阶函数+函数柯理化 demo

saveFormData=(type)=>{  
	return (event)=>{
		this.setState({
			[type]:event.target.value  
		})
	}
}
//不使用高阶函数,直接在saveFormData中同时接收两个参数,是拿不到event的,,
//原因在于react会帮你去调用onChange,,接收到的是 this.saveFormData('username')的返回值  
//相当于把返回值赋给了onChange,,并不会在改变的时候触发 this.saveFormData方法
<form>
	<input onChange={ this.saveFormData('username') } />
	<input onChange={ this.saveFormData('password') } />
	<button>登录</button>
</form>

上面代码的saveFormData函数其实就是高阶函数,因为它返回的值是一个函数,而且这个函数就是通过函数柯里化的方式在调用(先是saveFormData函数接收一个参数type,随后返回函数,然后再接收别的参数,然后最终来处理结果(设置state值))

 不使用柯里化去实现?

saveFormData=(type,value)=>{
	this.setState({
		[type]:value
	})
}
<form>
	<input onChange={ (event)=>{this.saveFormData('username',event.target.value)} } />
	<input onChange={ (event)=>{this.saveFormData('password',event.target.value)} } />
	<button>登录</button>
</form>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值