在React中为按钮绑定点击事件

简介: 一、React中绑定事件的注意点二、各案例详解

React中为按钮绑定点击事件

 

 

目录:

一、React中绑定事件的注意点

二、各案例详解

 

一、React中绑定事件的注意点

1、在React中绑定事件

React中事件都由React提供,事件名字必须按React规范来写。比如点击事件onClick事件C字母需要大写,像鼠标的覆盖事件onMouseOverMO需要大写。

 

//点击事件由onClick提供 鼠标事件由onMouseOver提供,下面实例举例:

components中新建BindEvent.jsx

import React from' react'

export default class BindEvent extends React . Component {

constructor(){
super( )
//
私有数据
this.state = {}
}

 

render(){//需要一个合法js标签
return <div>
BindEvent
组件


<hr/>

{/*React 中,有一套自己的事件绑定机制;事件名,是小驼峰命名*/}

 

<button >按钮</button>//在页面上放一个按钮
//在传统的网页中可使用下方三个中其中一种方法修改上面的代码
{/*<button onClick=
function()( console.log('ok') }}>按钮</button>*/}//改为首字母大写后,就变成React中事件绑定机制了。

如果onClick后面填写为空会报错,提醒需要一个function。当点击按钮时就会走function这个函数,只要一点就会调用function。如果处理函数逻辑比较复杂那么这么写就显得比较乱。接下来可以将function单独抽出来。

 

//这是一个匿名函数

 

//注释后修改为:

<button onClick={this.myclickHandler}按钮</button>
//
在自己的方法内调用方法需要用this标注

//如果加的小括号,是方法的调用,并把调用的反回值放到相应位置,不点击按钮就直接显示出结果。直接用myclickHandler是不行的,需要加this。每当触发onClick执行箭头函数的时候,就执行了函数体内的内容。

 

//传统按钮事件处理方法有
//onclick=""  onmouseovers=""  onmouseenters=""

//"" 中填一个处理函数

//用这三种方法会报出三个错误,可以猜出在React中有一套自己的事件处理机制。

</div>
     }
}

 

//这是一个实例方法
myclickHandler()=>{

//myclickHandler()属于类的内部,render()myclickHandler()都属于实例方法。将函数的引用交给function
     console. log( '22222222' )
}//
这是匿名函数的引用,和匿名函数效果是完全一样的。

 

index.js中编写:


//1.
导入包
// import React, {Component} from 'react'
import React from'react'
import ReactDOM from' react - dom'

import BindEvent from'@/ components/ BindEvent'

// 3.
调用render函数渲染
ReactDOM. render(<div>I
<BindEvent></BindEvent>

//只要new了一个实例在页面上,那么render函数必然会被执行。render就会解析执行return里面的东西,当解析到onClick事件那么render这个框架就会解析执行onClick里面的代码。

//用了这个组件就必然会调用上方的函数
</div>,document.getElementById('app'))


2.
为事件提供的处理函数,必须是如下格式
onClick= { function }//
使用时必须制定一个function


3.
用的最多的事件绑定形式为:

//这是鼠标点击事件的标准用法

//实例及注意事项

{/*注意:onClick 直接受function作为处理函数*/}
{/*
注意:箭头函数,本身就是一个匿名的function 函数*/}
<button onClick={ ()=>{} }>
按钮</button>

//放了一个箭头函数相当于放了一个function

 

btn.onclick () => {
     //
}
setTimeout(function(){
// this
指向 window

}, 1000)


setTimeout(()  =>{
// this
不一定指向 window
}, 1000)

 

 

二、各案例详解


新建一个测试项目:
命名为箭头函数.html

< !DOCTYPE html>
<html lang="en">
<head>
     <meta charset="UTF-8">
   <meta name= "viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible"content=" ie=edge">
     <title>Document</title>
</head>
<body>
     <button id=" btn" >
按钮< /button>


     <script>

onload = function() {
           

const btn = document . getElementById( 'btn ' )
                 

console.log(this)//在这里打印this里面是谁就打印谁


     btn.onclick = function(){
     //this.style.backgroundColor =
red '

//实现鼠标点击后背景变红功能

//实现功能后注释掉

setTimeout(() => {//
在点击事件里加一个延时器
this. style. backgroundColor ='red'

 

//直接使用是不行的因为在setTimeoutthis永远指向window

因此改造成箭头函数。箭头函数就是一个普通的匿名函数,只不过this的指向比较特殊一些。
}, 1000)//
加定时函数,实现点击鼠标后背景一秒钟后变红

           }

     }
</script>
</body>


</html>


<button onClick={ () => this. show('
传参') }>按钮</button>
//
事件的处理函数,需要定义为一个箭头函数,然后赋值给函数名称


show = (arg1) => {
console.1og( ' show
方法' + arg1)
}

//箭头函数本身是一个匿名函数,触发onClick后调用箭头函数。先定义一个function在赋值给show调用。

 

这样在触发的点击事件后就可以根据show这个函数名来调用这个箭头函数。这是最标准的写法,也是最不易出错的。

 

在箭头函数里写方法调用,在将箭头函数赋值给一个具体的函数名。

相关文章
|
8天前
|
前端开发 JavaScript 开发者
React 按钮组件 Button
本文介绍了 React 中按钮组件的基础概念,包括基本的 `&lt;button&gt;` 元素和自定义组件。详细探讨了事件处理、参数传递、状态管理、样式设置和可访问性优化等常见问题及其解决方案,并提供了代码示例。帮助开发者避免易错点,提升按钮组件的使用体验。
117 77
|
19天前
|
前端开发 开发者
React 单选按钮 Radio Button 详解
本文介绍 React 中单选按钮的基础概念、基本用法、常见问题及进阶技巧,包括如何正确设置 `checked` 属性、确保 `name` 属性一致、处理 `onChange` 事件,以及动态生成单选按钮和使用受控组件等,通过代码示例详细解析,帮助开发者有效管理状态和优化用户交互。
64 32
|
18天前
|
存储 前端开发 UED
React 中的多选按钮(Checkbox)
本文详细介绍了在 React 中实现多选按钮(Checkbox)的方法,包括基础用法、常见问题及解决策略、进阶技巧如使用受控组件和第三方库,旨在帮助开发者更好地理解和应用多选按钮组件。
67 19
|
3月前
|
前端开发 JavaScript UED
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
在React或Vue中,若需在更改用户所属组后更新页面所有数据但不刷新整个页面,可以通过改变路由出口的key值来实现。在用户切换组成功后,更新key值,这会触发React或Vue重新渲染路由出口下的所有组件,从而请求新的数据。这种方法避免了使用`window.location.reload()`导致的页面闪烁,提供了更流畅的用户体验。
60 1
react或者vue更改用户所属组,将页面所有数据进行替换(解决问题思路)____一个按钮使得页面所有接口重新请求
|
3月前
|
缓存 前端开发 JavaScript
在react项目中实现按钮权限createContext && useContext
文章介绍了在React项目中如何使用`createContext`和`useContext`来实现按钮级别的权限控制。
83 0
|
7月前
|
前端开发 JavaScript
在React中,如何通过事件处理函数来管理按钮的点击行为?
【5月更文挑战第28天】在React中,如何通过事件处理函数来管理按钮的点击行为?
72 1
|
7月前
|
缓存 前端开发 JavaScript
【亮剑】在React中如何通过点击事件控制组件显示与隐藏,包括基础概念和高级应用
【4月更文挑战第30天】本文介绍了在React中如何通过点击事件控制组件显示与隐藏,包括基础概念和高级应用。使用`useState`钩子和Context API可实现状态驱动的条件渲染,通过CSS类控制组件样式,或利用React Portals在DOM不同位置渲染。性能优化应注意避免不必要的渲染、合理使用Keys、优化事件处理器、使用Memoization及清理资源。测试和验证确保逻辑正确性,以构建动态用户界面并提升应用性能。
657 0
|
7月前
|
前端开发
React中事件的绑定
React中事件的绑定
|
前端开发 JavaScript
React基础语法08-点击按钮,获取input框的值(通过ref来获取)
React基础语法08-点击按钮,获取input框的值(通过ref来获取)
190 0
|
前端开发
React基础语法07-点击按钮,获取input框的值(通过事件对象获取)
React基础语法07-点击按钮,获取input框的值(通过事件对象获取)
126 0