首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React---高阶函数和函数柯里化的理解

React---高阶函数和函数柯里化的理解

作者头像
半指温柔乐
发布2021-04-22 15:45:23
1.1K0
发布2021-04-22 15:45:23
举报
文章被收录于专栏:前端知识分享前端知识分享

一、高阶函数

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

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

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

常见的高阶函数有:Promise、setTimeout、arr.map()等等

二、函数柯里化

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

function sum(a){

return(b)=>{

return (c)=>{

return a+b+c

}

}

}

      const result = sum(1)(2)(3)

   console.log(result);

三、案例

1. 使用函数柯里化实现

 1 <script type="text/babel">
 2         //创建组件
 3         class Login extends React.Component{
 4             //初始化状态
 5             state = {
 6                 username:'', //用户名
 7                 password:'' //密码
 8             }
 9 
10             //保存表单数据到状态中
11             saveFormData = (dataType)=>{
12                 return (event)=>{
13                     this.setState({[dataType]:event.target.value})
14                 }
15             }
16 
17             //表单提交的回调
18             handleSubmit = (event)=>{
19                 event.preventDefault() //阻止表单提交
20                 const {username,password} = this.state
21                 alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
22             }
23             render(){
24                 return(
25                     <form onSubmit={this.handleSubmit}>
26                         用户名:<input onChange={this.saveFormData('username')} type="text" name="username"/>
27                         密码:<input onChange={this.saveFormData('password')} type="password" name="password"/>
28                         <button>登录</button>
29                     </form>
30                 )
31             }
32         }
33         //渲染组件
34         ReactDOM.render(<Login/>,document.getElementById('test'))
35     </script>

2. 不用函数柯里化实现

 1 <script type="text/babel">
 2         //创建组件
 3         class Login extends React.Component{
 4             //初始化状态
 5             state = {
 6                 username:'', //用户名
 7                 password:'' //密码
 8             }
 9 
10             //保存表单数据到状态中
11             saveFormData = (dataType,event)=>{
12                 this.setState({[dataType]:event.target.value})
13             }
14 
15             //表单提交的回调
16             handleSubmit = (event)=>{
17                 event.preventDefault() //阻止表单提交
18                 const {username,password} = this.state
19                 alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
20             }
21             render(){
22                 return(
23                     <form onSubmit={this.handleSubmit}>
24                         用户名:<input onChange={event => this.saveFormData('username',event) } type="text" name="username"/>
25                         密码:<input onChange={event => this.saveFormData('password',event) } type="password" name="password"/>
26                         <button>登录</button>
27                     </form>
28                 )
29             }
30         }
31         //渲染组件
32         ReactDOM.render(<Login/>,document.getElementById('test'))
33     </script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、高阶函数
  • 二、函数柯里化
  • 三、案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档