一、高阶函数
1.1、概念
高阶函数
:如果一个函数符合下面2个规范中的任何一个
,那该函数就是高阶函数
。
1.若A函数,接收的参数
是一个函数
,那么A就可以称之为高阶函数。
2.若A函数,调用的返回值
依然是一个函数
,那么A就可以称之为高阶函数。
常见的高阶函数有:Promise
、setTimeout
、arr.map()
等等
1.2、案例
以下案例就是高阶函数
saveFormData = (event)=>{
return ()=>{
console.log('@');
}
}
<form onSubmit={
this.handleSubmit}>
用户名:<input onChange={
this.saveFormData('username')} type="text" name="username"/>
密码:<input onChange={
this.saveFormData('password')} type="password" name="password"/>
<button>登录</button>
</form>
a、this.saveFormData(‘username’) 将saveFormData返回值
作为onChange
的回调
,不是
将saveFormData
作为回调
b、如果使用 this.saveFormData('username')
那么saveFormData赋值函数必须返回东西
给onChange
把saveFormData赋值函数返回值(返回的函数
)交给onChange作为回调
c、所以我们在saveFormData的return函数里打印一下‘@’符号,那么就会把这个打印的值
返回给onChange,在input框边输入边打印@符号
d、saveFormData传的dataType
其实就是username和password
e、我们在输入的时候调用的肯定是return函数 return才是真正的回调
, reac
t帮我回调的时候把event
传进去了 通过event.target.value
可以取到我们输出的值
saveFormData = (dataType)=>{
// console.log(dataType);
return (event)=>{
// console.log('@');
console.log(dataType,event.target.value);
}
}
f、可以输出内容 我们可以用setState
存到state
里面去
this.setState({
[dataType]:event.target.value})
1.3、完整代码及效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>高阶函数_函数柯里化</title>