首页 > 其他分享 >react事件命名

react事件命名

时间:2024-10-12 15:10:36浏览次数:9  
标签:事件处理 函数 handleClick alert react 传递 点击 事件 命名

export default function Button() {
  function handleClick() {
    alert('你点击了我!');
  }

  return (
    <button onClick={handleClick}>
      点我
    </button>
  );
}

按照惯例,通常将事件处理程序命名为 handle,后接事件名。你会经常看到 onClick={handleClick}onMouseEnter={handleMouseEnter} 等。

命名事件处理函数 prop 

内置组件(<button><div>)仅支持 浏览器事件名称,例如 onClick。但是,当你构建自己的组件时,你可以按你个人喜好命名事件处理函数的 prop。

按照惯例,事件处理函数 props 应该以 on 开头,后跟一个大写字母。

例如,Button 组件的 onClick prop 本来也可以被命名为 onSmash

function Button({ onSmash, children }) {
  return (
    <button onClick={onSmash}>
      {children}
    </button>
  );
}

export default function App() {
  return (
    <div>
      <Button onSmash={() => alert('正在播放!')}>
        播放电影
      </Button>
      <Button onSmash={() => alert('正在上传!')}>
        上传图片
      </Button>
    </div>
  );
}

  

 

传递给事件处理函数的函数应直接传递,而非调用。例如:

传递一个函数(正确)	调用一个函数(错误)
<button onClick={handleClick}>	<button onClick={handleClick()}>
区别很微妙。在第一个示例中,handleClick 函数作为 onClick 事件处理函数传递。这会让 React 记住它,并且只在用户点击按钮时调用你的函数。

在第二个示例中,handleClick() 中最后的 () 会在 渲染 过程中 立即 触发函数,即使没有任何点击。这是因为位于 JSX {} 之间的 JavaScript 会立即执行。

当你编写内联代码时,同样的陷阱可能会以不同的方式出现:

传递一个函数(正确)	调用一个函数(错误)
<button onClick={() => alert('...')}>	<button onClick={alert('...')}>
如果按如下方式传递内联代码,并不会在点击时触发,而是会在每次组件渲染时触发:

// 这个 alert 在组件渲染时触发,而不是点击时触发!
<button onClick={alert('你点击了我!')}>
如果你想要定义内联事件处理函数,请将其包装在匿名函数中,如下所示:

<button onClick={() => alert('你点击了我!')}>
这里创建了一个稍后调用的函数,而不会在每次渲染时执行其内部代码。

在这两种情况下,你都应该传递一个函数:

<button onClick={handleClick}> 传递了 handleClick 函数。
<button onClick={() => alert('...')}> 传递了 () => alert('...') 函数。

  

标签:事件处理,函数,handleClick,alert,react,传递,点击,事件,命名
From: https://www.cnblogs.com/ygyy/p/18460600

相关文章

  • Nuxt.js 应用中的 ready 事件钩子详解
    title:Nuxt.js应用中的ready事件钩子详解date:2024/10/12updated:2024/10/12author:cmdragonexcerpt:ready钩子是Nuxt.js中一个重要的生命周期事件,它在Nuxt实例初始化完成后被调用。当Nuxt已经准备好并准备开始处理请求或渲染页面时,这一钩子会被触发。cate......
  • 了解Android中的事件分发机制
    Android中的事件分发机制详解在Android开发中,事件分发机制是处理用户输入事件(如触摸、点击、滑动等)的核心部分。深入理解这一机制对于开发者来说至关重要,它有助于我们更好地处理用户输入,提升应用的交互体验。以下是对Android事件分发机制的详细解释,涵盖了事件的产生、传递与拦......
  • 事件循环
    一、浏览器的进程模型浏览器是⼀个多进程多线程的应⽤程序,当启动浏览器后,它会⾃动启动多个进程其中,最主要的进程有:1.浏览器进程主要负责界⾯显示、⽤户交互、⼦进程管理等。浏览器进程内部会启动多个线程处理不同的任务。2.⽹络进程负责加载⽹络资源。⽹络进程......
  • 使用taro和react语言实现:微信小程序,地图中展示气泡,并在气泡中实现倒计时功能
    使用Taro和React来实现微信小程序中的地图气泡倒计时功能,你需要首先确保已经安装了TaroCLI并创建了一个Taro项目。接下来,我们将逐步实现这个功能。1.初始化Taro项目如果你还没有安装TaroCLI,可以使用npm或yarn进行安装:npminstall-g@tarojs/cli#或......
  • React如何进行性能优化-方式、原理、示例
    目录一、使用shouldComponentUpdate和React.memo1.使用shouldComponentUpdate(类组件)2.使用React.memo(函数组件)二、使用useMemo三、懒加载四、避免使用匿名函数五、避免使用内联对象六、列表使用key属性一、使用shouldComponentUpdate和React.memo1.使用shouldC......
  • QT定时器+事件捕获
    QT定时器类定时器类的使用主要包括定时和启动两个步骤。要使用OTimer类,需要引用头文件:#include<QTimer>QTimer类常用的成员函数有(1)voidstart(std::chrono::milisecondsmsec):启动定时器,参数为定时时间(单位为毫秒),如:        QTimermyTimer;        ......
  • Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)
    关于深度实战社区我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万+粉丝,拥有2篇国家级人工智能发明专利。社区特色:深度实战算法创新获取全部完整项目......
  • Nuxt.js 应用中的 kit:compatibility 事件钩子详解
    title:Nuxt.js应用中的kit:compatibility事件钩子详解date:2024/10/11updated:2024/10/11author:cmdragonexcerpt:kit:compatibility是处理浏览器兼容性问题的有效工具。正如本篇文章中所述,合理地利用这一钩子可以提升用户体验,并确保应用在不同环境中都能稳定运行......
  • Unity游戏通用框架——事件的订阅和发布(观察者模式)
    在游戏开发的基本思想中,逻辑与表现的分离极为重要,相互之间并不关心具体实现,只注册对应的事件,有事件发生时才调用相应的函数事件管理器usingSystem.Collections;usingSystem.Collections.Generic;publicclassevent_manager:Singletom<event_manager>{public......
  • RDS运维事件闪断时间为多久?
    RDS运维事件闪断时间为多久?闪断时间30秒左右,建议设置为业务低峰期,且确保应用有自动重连机制。https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/switch-workloads-over-between-primary-and-secondary-apsaradb-rds-for-mysql-instances?spm=a2c4g.11186623.0.0.712741......