React基础篇之高阶函数&函数柯里化

2021-12-12  本文已影响0人  硅谷干货

高阶函数

<script type="text/babel">
  //#region 
      /* 
        高阶函数:如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数。
                1.若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数。
                2.若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数。
                常见的高阶函数有:Promise、setTimeout、arr.map()等等

        函数的柯里化:通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式。 
          function sum(a){
            return(b)=>{
              return (c)=>{
                return a+b+c
              }
            }
          }
        */
  //#endregion
  //创建组件
  class Login extends React.Component{
    //初始化状态
    state = {
      username:'', //用户名
      password:'' //密码
    }

    //保存表单数据到状态中
    saveFormData = (dataType)=>{
      return (event)=>{
        this.setState({[dataType]:event.target.value})
      }
    }

    //表单提交的回调
    handleSubmit = (event)=>{
      event.preventDefault() //阻止表单提交
      const {username,password} = this.state
      alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
    }
    render(){
      return(
        <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>
      )
    }
  }
  //渲染组件
  ReactDOM.render(<Login/>,document.getElementById('test'))
</script>

函数柯里化

<script type="text/babel">
  //创建组件
  class Login extends React.Component{
    //初始化状态
    state = {
      username:'', //用户名
      password:'' //密码
    }

    //保存表单数据到状态中
    saveFormData = (dataType,event)=>{
      this.setState({[dataType]:event.target.value})
    }

    //表单提交的回调
    handleSubmit = (event)=>{
      event.preventDefault() //阻止表单提交
      const {username,password} = this.state
      alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
    }
    render(){
      return(
        <form onSubmit={this.handleSubmit}>
          用户名:<input onChange={event => this.saveFormData('username',event) } type="text" name="username"/>
          密码:<input onChange={event => this.saveFormData('password',event) } type="password" name="password"/>
          <button>登录</button>
        </form>
      )
    }
  }
  //渲染组件
  ReactDOM.render(<Login/>,document.getElementById('test'))
</script>
上一篇 下一篇

猜你喜欢

热点阅读