zoukankan      html  css  js  c++  java
  • React---高阶函数和函数柯里化的理解

    一、高阶函数

      如果一个函数符合下面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>
     
  • 相关阅读:
    win10前面板耳机没声音
    学计算机的值得一看的文章,跟帖也很有水平啊
    ubuntu下编译caffe
    pip卡住不动的解决方案
    数字图像处理处理中的数学怎么提高?
    安装vmall5:从ebak恢复数据,需要配置php.ini
    python入门(7)Python程序的风格
    python入门(6)输入和输出
    python入门(5)使用文件编辑器编写代码并保存执行
    python入门(4)第一个python程序
  • 原文地址:https://www.cnblogs.com/le220/p/14678711.html
Copyright © 2011-2022 走看看