当前位置: 首页 > 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>
http://www.dtcms.com/a/134030.html

相关文章:

  • 浅析基于单片机的数字时钟与温度显示系统的设计
  • 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重塑零售连锁行业客户服务竞争力
  • 【行业树选择器组件:基于Vue3与Element Plus的高性能树形选择组件优化与重构】
  • 微服务1--服务架构
  • 计算机视觉算法实现——疲劳驾驶检测
  • Windows 下实现 PHP 多版本动态切换管理(适配 phpStudy)+ 一键切换工具源码分享
  • 基于JSP+MySQL实现用户注册登录及短信发送功能
  • Swift —— delegate 设计模式
  • 宝塔面板面试内容整理-Web服务器优化
  • Google最新《Prompt Engineering》白皮书全解析
  • 多线程、JUC——面试问题自我总结
  • 住宅代理是什么?2025详细指南