Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >React---高阶函数和函数柯里化的理解

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

作者头像
半指温柔乐
发布于 2021-04-22 07:45:23
发布于 2021-04-22 07:45:23
1.2K00
代码可运行
举报
文章被收录于专栏:前端知识分享前端知识分享
运行总次数:0
代码可运行

一、高阶函数

  如果一个函数符合下面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. 使用函数柯里化实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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. 不用函数柯里化实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JS 当中的函数柯里化和高阶函数
柯里化: 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术
小小杰啊
2022/12/21
1.1K0
React--12:高阶函数
saveUsername 和 savePassword 都是在往状态中写入值。那么现在我们把他们写成一个方法 saveFormData,并用传参进行区分标识。
用户4793865
2023/01/12
7080
React——受控组件和非受控组件【八】
思索
2024/08/16
1190
React——受控组件和非受控组件【八】
【React】学习笔记(一)——React入门、面向组件编程、函数柯里化
用于构建用户界面的 Javascript 库,它主要专注于界面与视图。采用组件化模式、声明式编码,提高开发效率及组件复用率。在React Native中可以使用React语法进行移动端开发。使用虚拟DOM+优秀的Diffing算法,尽量减少与真实DOM的交互。
鸡先生
2022/10/29
5.2K0
【React】学习笔记(一)——React入门、面向组件编程、函数柯里化
React---组件实例三大核心属性(三)refs与事件处理
    获取值:const { input1 } = this.refs; console.log(input.value)
半指温柔乐
2021/04/22
1.2K0
React两大组件,三大核心属性,事件处理和函数柯里化
3.我们编码时基本只需要操作react的虚拟DOM相关数据, react会转换为真实DOM变化而更新界。
大忽悠爱学习
2021/11/15
3.2K0
React--11: refs与事件处理非受控组件和受控组件
首先,受控组件不能使用ref了。那我们想改变值怎么办呢?给输入框添加onChange事件,只要输入框的值改变就会触发一个函数。
用户4793865
2023/01/12
5650
01-React基础(JSX, State, Refs, Props组件交互, Event, 生命周期)
引入JS # react 开发JS react.development.js # react dom渲染JS react-dom.development.js # jsx语法转换JS babel.min.js # 参数传值校验JS prop-types.js JSX语法 # 容器 <div id="test"></div> # 注意写JSX语法需要定义为babel <script type="text/babel"> const myName = "flower"; # 创建虚拟DOM, 不需要写
彼岸舞
2022/08/24
1.1K0
01-React基础(JSX, State, Refs, Props组件交互, Event, 生命周期)
测开技能--Web开发 React 学习(十)表单
列表 & Key function NumberList(props) { const numbers = props.numbers; const listItems = numbers.map((number) => <li key={number}>{number}</li> ); return ( <ul>{listItems}</ul> ); } const numbers = [1, 2, 3, 4, 5]; ReactDOM.render( <Num
雷子
2021/03/15
4040
测开技能--Web开发 React 学习(十)表单
React的受控组件用法详解!
用state来获取和设置输入元素值的组件,称之为受控组件。<input type="text">, <textarea> 和 <select> 等标签都可用 value 属性,来实现受控组件。
Learn-anything.cn
2021/11/28
6520
React 状态、事件与动态渲染
例子中使用map方法将每个元素的值*2,最后得到的数组为:[2, 4, 6, 8, 10]。在React中,处理组件数组的方式与之类似。
随风溜达的向日葵
2018/07/31
1.5K0
一小时入门React
注意:在点击事件中,不要直接调用函数,如果需要传递参数,使用箭头函数,jsx中所有dom事件必须用驼峰命名。如下:
乐圣
2022/11/19
1.1K0
一小时入门React
前端模块化开发--React框架(一): 入门和面向组件编程
React中文官网 一、简介 1、特点 1)Declarative(声明式编码) 2)Component-Based(组件化编码) 3)Learn Once, Write Anywhere(支持客户端与服务器渲染) 4)高效 5)单向数据流 2、React高效的原因 1)虚拟(virtual)DOM, 不总是直接操作DOM 2)DOM Diff算法, 最小化页面重绘 3、相关的js核心库 1)react.js: React的核心库 2)react-dom.js: 提供操作DOM的react扩展库 3)bab
MiChong
2020/09/24
2.2K0
前端模块化开发--React框架(一): 入门和面向组件编程
React
被称为 JSX,它是 JavaScript 的语法扩展,JSX 产生 React “元素”,可渲染到 DOM 中
晚上没宵夜
2022/11/14
2.2K0
antd4与antd3Form表单设计区别
antd3思想:使用HOC(高阶组件)包裹form表单,HOC组件中的state存储所有的value值,定义设置值和获取值的方法 缺点:动一发牵全身,一个value值改变,因为这是顶级状态,所以所有的子组件都会因父组件的重新render而render,浪费了性能
刘嘿哈
2022/10/25
2K0
一文读透react精髓
学和使用react有一年多了,最近想在梳理一下react基础知识,夯实基础,激流勇进~
xiaofeng123aa
2022/09/25
2.8K0
React 实战
只需要保证,在同一个数组中的兄弟元素之间的 key 是唯一的。而不需要在整个应用程序甚至单个组件中保持唯一。
王秀龙
2021/08/26
1.2K0
React 实战
受控组件表单&不受控组件
表单里面的数据 根据State确定 在 HTML 中,表单元素如 <input>,<textarea> 和 <select>表单元素通常保持自己的状态,并根据用户输入进行更新。而在 React 中,可变状态一般保存在组件的 state(状态) 属性中,并且只能通过 setState()更新。
河湾欢儿
2018/09/06
2.2K0
react之jsx基础(2)高频使用场景
在 React 中,JSX 的使用是非常广泛和高频的。以下是一些常见的高频使用场景及其示例,帮助你更好地理解 JSX 的实际应用:
肥晨
2024/09/20
1910
react之jsx基础(2)高频使用场景
React受控与非受控组件
表单项的元素 input/textarea/select 等 需要维护自己的state,并根据用户输入进行更新。 可变状态通常保存在组件的state中,只能通过setState()进行更新。
epoos
2022/06/06
5540
相关推荐
JS 当中的函数柯里化和高阶函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验