高阶函数就是传递的参数为一个函数,或者返回的也是一个函数,如Promise,settimeout,setInterval 函数柯里化就是函数式变成,函数链式调用

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="app"></div>
    11. <div id="app1"></div>
    12. <script src="../js/react.development.js"></script>
    13. <script src="../js/react-dom.development.js"></script>
    14. <script src="../js/babel.min.js"></script>
    15. <script src="../js/prop-types.js"></script>
    16. <script type="text/babel">
    17. class Input extends React.Component {
    18. // {/*这里如果onChange接受的是一个函数,则它的参数为e(react的事件处理对象),如果接受的是一个函数调用,*/}
    19. // {/*则没有事件处理对象,因此需要让函数中返回一个函数,内层函数的参数则为事件处理对象,外层传递的是一些需要从外部传递的参数*/}
    20. useFormHandle = (dataType) => {
    21. //返回一个函数,函数中的参数是一个事件对象
    22. return (e) => {
    23. this.setState({
    24. //这里的属性名是变量,用[]
    25. [dataType]: e.target.value
    26. })
    27. }
    28. }
    29. render() {
    30. return (
    31. <form onSubmit={this.submitHandle}>
    32. 用户名: <input type="text" placeholder="请输入用户名" ref={c => this.input1 = c} name="username" onChange={this.useFormHandle("username")} />
    33. 密码: <input type="password" placeholder="请输入密码" ref={c => this.input2 = c} name="password" onChange={this.useFormHandle("password")} />
    34. <button>提交</button>
    35. </form>
    36. )
    37. }
    38. }
    39. ReactDOM.render(<Input />, document.getElementById("app"))
    40. </script>
    41. </body>
    42. </html>

    高阶函数可以是函返回函数,在react中如果需要在通过事件函数传参

    1. 第一种是传递一个函数,其中函数的参数,可以设置成我们需要传递的参数
    2. 第二种高阶函数,调用事件函数,返回一个函数,外层函数的参数可以为需要传递的参数,内层有一个e,事件独享可以进行操作。