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

React 前端框架4

六、React 中的事件处理

(一)绑定事件的方式

在 React 中,事件绑定和传统的 HTML 中的事件绑定有一些不同,它采用了驼峰命名法来命名事件名称,并且事件绑定的属性值是一个函数。例如,在 HTML 中绑定点击事件可能是 <button onclick="handleClick()">点击我</button>,而在 React 中则是 <button onClick={() => handleClick()}>点击我</button>(这里假设 handleClick 是在组件内部定义的一个函数),或者更常见的是将函数先绑定到组件实例上(主要针对类组件),比如:

import React, { Component } from 'react';

class ButtonComponent extends Component {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    console.log('按钮被点击了');
  }

  render() {
    return (
      <button onClick={this.handleClick}>点击我</button>
    );
  }
}

export default ButtonComponent;

在类组件中,因为类的方法默认情况下 this 的指向问题,需要在 constructor 中通过 bind 方法将事件处理函数的 this 绑定到组件实例上,这样才能在事件处理函数中正确地访问到组件的属性和 state 等数据。

(二)事件参数传递

有时候我们需要在事件处理函数中传递额外的参数,常见的做法有两种:

  • 使用箭头函数包裹
import React, { Component } from 'react';

class ParameterPassingComponent extends Component {
  handleClick(name) {
    console.log(`你好, ${name}!`);
  }

  render() {
    return (
      <div>
        <button onClick={() => this.handleClick('小明')}>向小明打招呼</button>
        <button onClick={() => this.handleClick('小红')}>向小红打招呼</button>
      </div>
    );
  }
}

export default ParameterPassingComponent;

 这里通过箭头函数包裹的方式,在调用 this.handleClick 时传递了不同的参数进去。

import React, { Component } from 'react';

class ParameterPassingComponent extends Component {
  handleClick(name) {
    console.log(`你好, ${name}!`);
  }

  render() {
    return (
      <div>
        <button onClick={this.handleClick.bind(this, '小明')}>向小明打招呼</button>
        <button onClick={this.handleClick.bind(this, '小红')}>向小红打招呼</button>
      </div>
    );
  }
}

export default ParameterPassingComponent;

 使用 bind 方法除了能绑定 this 之外,还可以同时传递其他参数,达到类似的效果。


http://www.kler.cn/a/420045.html

相关文章:

  • Spark常问面试题---项目总结
  • 十,[极客大挑战 2019]Secret File1
  • 08-模块与包
  • 【MySql】navicat连接报2013错误
  • 设计模式 更新ing
  • CSS变量用法及实践
  • 路径规划之启发式算法之三:鲸鱼优化算法(Whale Optimization Algorithm)
  • Anaconda3安装及使用
  • (数据结构与算法)如何提高学习算法的效率?面试算法重点有哪些?面试需要哪些能力?
  • Vue3学习宝典
  • 计算机毕业设计Spark+SpringBoot旅游推荐系统 旅游景点推荐 旅游可视化 旅游爬虫 景区客流量预测 旅游大数据 大数据毕业设计
  • 四、初识C语言(4)
  • Python 时间和日期
  • STM32 ADC --- 知识点总结
  • 什么语言适合做 Serverless 开发?
  • Elasticsearch 集成
  • JavaEE-线程池专题
  • 斯坦福李飞飞《AI Agent:多模态交互前沿调查》论文
  • 推进汽车互联:全面物联网基础设施框架的提案
  • 牛客网刷题 | BC122 有序序列判断
  • docker部署xxl-job(含镜像打包)
  • 一键解析RAW文件,GPS定位展示,摄影师专用照片管理软件
  • 单台服务器上创建多个端口MySQL服务
  • 【Leetcode 每日一题】52. N 皇后 II
  • windows执行多个jar包脚本,若依微服务批量执行脚本
  • 安装 RabbitMQ 服务