高阶函数就是传递的参数为一个函数,或者返回的也是一个函数,如Promise,settimeout,setInterval 函数柯里化就是函数式变成,函数链式调用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<div id="app1"></div>
<script src="../js/react.development.js"></script>
<script src="../js/react-dom.development.js"></script>
<script src="../js/babel.min.js"></script>
<script src="../js/prop-types.js"></script>
<script type="text/babel">
class Input extends React.Component {
// {/*这里如果onChange接受的是一个函数,则它的参数为e(react的事件处理对象),如果接受的是一个函数调用,*/}
// {/*则没有事件处理对象,因此需要让函数中返回一个函数,内层函数的参数则为事件处理对象,外层传递的是一些需要从外部传递的参数*/}
useFormHandle = (dataType) => {
//返回一个函数,函数中的参数是一个事件对象
return (e) => {
this.setState({
//这里的属性名是变量,用[]
[dataType]: e.target.value
})
}
}
render() {
return (
<form onSubmit={this.submitHandle}>
用户名: <input type="text" placeholder="请输入用户名" ref={c => this.input1 = c} name="username" onChange={this.useFormHandle("username")} />
密码: <input type="password" placeholder="请输入密码" ref={c => this.input2 = c} name="password" onChange={this.useFormHandle("password")} />
<button>提交</button>
</form>
)
}
}
ReactDOM.render(<Input />, document.getElementById("app"))
</script>
</body>
</html>
高阶函数可以是函返回函数,在react中如果需要在通过事件函数传参
第一种是传递一个函数,其中函数的参数,可以设置成我们需要传递的参数
第二种高阶函数,调用事件函数,返回一个函数,外层函数的参数可以为需要传递的参数,内层有一个e,事件独享可以进行操作。