当前位置: 首页 > news >正文

react-07React提交表单数据调用同一方法(高阶函数,函数柯里化概念)

1.高阶函数与函数柯里化概念

 高阶函数:符合其中之一,那该函数为高阶函数

  • 1.A函数,接收的参数是一个函数,那么A就是高阶函数
  • 2.A函数,调用的返回值是一个函数,那么A就是高阶函数

常见的高阶函数:Promise setTimeout  数组常见的方法 arr.map、filter、reduce、sort、forEach、find、findIndex、some、every、bind、call、apply。

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

2.提交表单数据调用同一方法

具体实现

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello,React 表单调用同一方法保存数据</title>
</head><body><!-- 容器 --><div id="test"></div><!-- {/* // 引入 React核心库 */} --><script src="https://unpkg.com/react@16/umd/react.production.min.js"></script><!-- {/* // 引入 react-dom 用于支持 react 操作 DOM */} --><script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script><!-- {/* // 引入 babel:1. ES6 ==> ES5 2. jsx ==> js */} --><script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!-- {/* // 引入 JSX 语法 */} --><script type="text/babel">// 1. 创建组件class LoginForm extends React.Component {// 初始化状态state = {username: '',//用户名password: ''//密码}// change事件 保存表单数据saveFormData = (dataType) => {return (event) => {this.setState({// 使用对象展开运算符将用户名或密码存入 state状态中[dataType]: event.target.value})}}handleSubmit = (event) => {// 阻止默认事件 阻止提交表单event.preventDefault()console.log(this.state);const ojectData = this.statealert(`用户名:${ojectData.username},密码:${ojectData.password}`)}render() {return (<form  onSubmit={this.handleSubmit}>用户名:<input onChange={this.saveFormData('username')} type="text" name="username" /><br />密码:<input  onChange={this.saveFormData('password')} type="password" name="password" /><br /><button>登录</button></form>)}}// 2. 渲染虚拟DOM到页面ReactDOM.render(<LoginForm />,document.getElementById('test'))</script>
</body></html>

 非柯里化实现提交

<body><!-- 容器 --><div id="test"></div><!-- {/* // 引入 React核心库 */} --><script src="https://unpkg.com/react@16/umd/react.production.min.js"></script><!-- {/* // 引入 react-dom 用于支持 react 操作 DOM */} --><script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script><!-- {/* // 引入 babel:1. ES6 ==> ES5 2. jsx ==> js */} --><script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script><!-- {/* // 引入 JSX 语法 */} --><script type="text/babel">// 1. 创建组件class LoginForm extends React.Component {// 初始化状态state = {username: '',//用户名password: ''//密码}// change事件 保存表单数据saveFormData = (dataType,event) => {this.setState({// 使用对象展开运算符将用户名或密码存入 state状态中[dataType]: event.target.value})}handleSubmit = (event) => {// 阻止默认事件 阻止提交表单event.preventDefault()console.log(this.state);const ojectData = this.statealert(`用户名:${ojectData.username},密码:${ojectData.password}`)}render() {return (<form  onSubmit={this.handleSubmit}>用户名:<input onChange={event=>this.saveFormData('username',event)} type="text" name="username" /><br />密码:<input  onChange={event=>this.saveFormData('password',event)} type="password" name="password" /><br /><button>登录</button></form>)}}// 2. 渲染虚拟DOM到页面ReactDOM.render(<LoginForm />,document.getElementById('test'))</script>
</body>

相关文章:

  • 浅析基于单片机的数字时钟与温度显示系统的设计
  • 50kN载重汽车轮胎高速耐久试验机
  • 【Linux】基础 IO(文件描述符、重定向、缓冲区)
  • Rust泛型与特性
  • 【数据结构】之散列
  • Xtuner微调大模型
  • 同济大学轻量化低成本具身导航!COSMO:基于选择性记忆组合的低开销视觉语言导航
  • Ubuntu系统18.04更新驱动解决方法
  • [CMake] CMakePresets.json简单使用
  • 不同编译器ARM MCU的指令与伪指令相同吗?
  • Unity 一些小功能(屏幕画画,)
  • 【网络编程】网络编程基础和Socket套接字
  • AF3 generate_chain_data_cache脚本解读
  • TDengine 与其他时序数据库对比:InfluxDB/TimescaleDB 选型指南(一)
  • AI智能体小结
  • 主流Embedding模型优劣势解析与技术选型指南(2025年4月)
  • npm和npx的作用和区别
  • 数据服务化 VS 数据中台:战略演进中的价值重构
  • 1×1卷积与GoogleNet
  • 天润融通AI Agent重塑零售连锁行业客户服务竞争力
  • 中国金茂向滨江集团提供11.21亿元诚意金借款,拟合作开发3月获取的地块
  • “女乘客遭顺风车深夜丢高速服务区”续:滴滴永久封禁两名涉事司机账号
  • 向总书记汇报具身智能发展的“稚辉君”:从期待到兴奋再到备受鼓舞
  • 电话费被私改成48元套餐长达数年,投诉后移动公司退补600元话费
  • 论法的精神︱张玉敏:知识产权保护要为社会经济文化发展服务
  • 太好玩了!坐进大卫·霍克尼的敞篷车进入他画笔下的四季