1、axios post
通过点击事件提交数据
不需要使用input
直接使用state
2、pdd
你好天天象上
默认执行
点击(1,2,3)也可以执行
并且能切换页码
3、tab 针对新闻不同时
4、天天象上首页和精品微课右侧 鼠标滑过展示全内容

代码如下:

react/first-react/src/views/Event/index.jsx
import React, { Component } from 'react';
import Tab from './tab-bak.jsx';
/*
1、驼峰形式 onClick
2、调用 onClick={this.Fn}
this指向问题
3、解决指向
1、箭头函数 onLog1 = ()=>{}
2、constructor this.fn = this.fn.bind(this)
// 事件处理函数绑定实例
onClick={this.Fn}
3、onClick={()=>{this.onLog2('text')}}
4、onClick={this.onLog3.bind(this,'text')}
4、给a标签添加一个事件
阻止默认事件
e.preventDefault();
5、冒泡
stopPropagation()
*/ class View extends Component {
constructor(props){
super(props);
this.state = { }
this.onLog = this.onLog.bind(this);
} onLog(){
// 普通 函数
console.log('首次打印')
console.log(this)
}
onLog1 = ()=>{
// 箭头函数
console.log(this);
}
onLog2(text){
// onClick={()=>this.fn(val)}
console.log(text);
console.log(this);
}
onLog3(text){
console.log(text);
console.log(this);
}
onAtag(e){
e.preventDefault();
console.log('这是a标签的事件');
} onDivAtag(e){ e.stopPropagation();
console.log('这是div里的a标签');
}
onDiv(){
console.log('这是div标签');
}
render(){
return(
<div>
<h3>事件</h3>
普通 事件:<input onClick={this.onLog}
type="button" value="点我"/><br/> 箭头函数:<input onClick={this.onLog1}
type="button" value="点我1"/><br/> 调用时 使用箭头函数:<input
onClick={()=>{this.onLog2('text')}}
type="button" value="点我2"/><br/> 调用时 使用bind函数:
<input
onClick={this.onLog3.bind(this,'text')}
type="button" value="点我3"/><br/> <br/><br/>
给a标签添加一个事件:
<a onClick={(e)=>{this.onAtag(e)}}
href="true">这是a标签</a><br/>
<br/><br/>
事件冒泡
<div onClick={()=>{this.onDiv()}}>
<span onClick={(e)=>{this.onDivAtag(e)}}
>这是div里面的a标签</span>
</div> <Tab/>
</div>
)
}
} export default View;
React JSX
Copy
react/first-react/src/views/Event/tab.jsx
import React, { Component } from 'react'; class View extends Component {
constructor(props){
super(props);
this.state = {
cur:3,
cur2:1,
}
}
tabSwitch(name,index){
// cur
// cur2
// [name]
this.setState({
[name]:index
})
// type = 1 显示 在校生
// type = 2 显示 毕业
// type = 3 显示 请假
// type = 4 显示 未返校
// if(type--)
// switch (expression) {
// case expression:
//
// break;
// default:
//
// }
// const typeArr = ['','在校生','毕业','请假','未返校']
// typeArr[type]
// const typeCfg = {
// '1':'在校生'
// '2':'毕业'
// '3':'请假'
// '4':'未返校'
// }
// typeCfg[type]
}
// tabSwitch2(index){
// this.setState({
// cur2:index
// })
// }
// class 想办法通用
clsFn(_index,cls1,cls2){
let {cur2} = this.state;
return cur2===_index ? cls1:cls2;
}
render(){
let { cur } = this.state;
return(
<div>
<div className="tab_con">
<ol>
<li onClick={()=>{this.tabSwitch('cur',1)}} className={cur===1?'cur':''}>菜单一</li>
<li onClick={()=>{this.tabSwitch('cur',2)}} className={cur===2?'cur':''}>菜单二</li>
<li onClick={()=>{this.tabSwitch('cur',3)}} className={cur===3?'cur':''}>菜单三</li>
</ol>
<ul>
<li className={cur===1?'cur li':'li'}>内容一</li>
<li className={cur===2?'cur li':'li'}>内容二</li>
<li className={cur===3?'cur li':'li'}>内容三</li>
</ul>
</div>
<div className="tab_con">
<ol>
<li onClick={()=>{this.tabSwitch('cur2',1)}} className={this.clsFn(1,'cur li','li')}>菜单一</li>
<li onClick={()=>{this.tabSwitch('cur2',2)}} className={this.clsFn(2,'cur li','li')}>菜单二</li>
<li onClick={()=>{this.tabSwitch('cur2',3)}} className={this.clsFn(3,'cur li','li')}>菜单三</li>
</ol>
<ul>
<li className={this.clsFn(1,'cur li','li')}>内容一</li><li className={this.clsFn(2,'cur li','li')}>内容二</li><li className={this.clsFn(3,'cur li','li')}>内容三</li></ul></div><div className="tab_con2"><ol><li onClick={()=>{this.tabSwitch('cur2',1)}} className={this.clsFn(1,'cur li','li')}>菜单一</li><li onClick={()=>{this.tabSwitch('cur2',2)}} className={this.clsFn(2,'cur li','li')}>菜单二</li><li onClick={()=>{this.tabSwitch('cur2',3)}} className={this.clsFn(3,'cur li','li')}>菜单三</li></ol><ul></ul></div></div>
)
}
}
export default View;
React JSX
Copy
react/first-react/src/styles/event.scss
@charset "UTF-8";
.tab_con {
width:500px;
margin:0 auto;
ol {
height:40px;
overflow:hidden;
li {
float:left;
height:40px;
line-height: 40px;
width:100px;
text-align: center;
font-size:14px;
color:#fff;
background: #333;
cursor: pointer;
margin-right:5px;
&.cur {
background: #f60;
}
}
}
ul {
li {
min-height:200px;
border:1px solid red;
display:none;
&.cur{
display: block;
}
}
}
}

 

事件处理 及冒泡 阻止默认事件 以及tab 切换的思路的更多相关文章

  1. vue 事件上加阻止冒泡 阻止默认事件

    重点 vue事件修饰符 <!-- 阻止单击事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提 ...

  2. JavaScript事件:事件处理模型(冒泡、捕获)、取消冒泡、阻止默认事件

    (一)事件处理模型---事件冒泡.捕获 (1)事件冒泡 24 <body> 25 <div class="warpper"> 26 <div clas ...

  3. js阻止冒泡和默认事件(默认行为)详解- jquery DefaultPrevented 函数

    <!DOCTYPE html> <html>     <head>     <meta charset="UTF-8">     & ...

  4. 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别

    今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ...

  5. js之阻止事件冒泡(待修改)和阻止默认事件

    阻止默认事件(event.stopPropagation()): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  6. javascript 阻止事件冒泡和阻止默认事件对比

    公司项目有像上图中效果的功能需求这也是很常见功能很简单功能,通过一个小例子和大家聊聊js的事件冒泡和默认事件. 先说说一般的实现方式即使用阻止事件冒泡的方式去做,给input绑定一个click事件(并 ...

  7. DOM2级事件对象、添加事件、阻止默认事件、阻止冒泡事件、获取事件对象目标的兼容处理

    事件对象——兼容处理 /* * 功能: 事件对象兼容 * 参数: 表示常规浏览器的事件对象e */ function getEvent(e) { // 如果存在e存在,直接返回,否则返回window. ...

  8. JS 之 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别

    在前端开发中,有时我们需要阻止冒泡和阻止默认事件的发生. 一.event.stopPropagation() 阻止事件的冒泡,不让事件向documen上蔓延,但是默认事件任然会执行,当调用这个方法的时 ...

  9. js阻止默认事件,如a标签跳转和事件冒泡

    禁止a标签点击跳转 <a href="http://baidu.com" onclick="return false">点我啊</a> ...

随机推荐

  1. 洛谷 P7515 - [省选联考 2021 A 卷] 矩阵游戏(差分约束)

    题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\ ...

  2. Jvarkit : Java utilities for Bioinformatics

    Jvarkit : Java utilities for Bioinformatics :一个java写的生物信息工具包:http://lindenb.github.io/jvarkit/

  3. 日常Java 2021/9/21

    将Java数组中的元素前后反转.题目要求:已知一个数组arr = {11,12,13,14,15}用程序实现把该数组中的元素值交换,交换后的数组arr = { 15,14,13,12,11},并输出交 ...

  4. Java偏向锁浅析

    偏向锁的定义 顾名思义,偏向锁会偏向第一个访问锁的线程. 如果在接下来的运行过程中,该锁没有被其他线程访问,这持有偏向锁的线程将永远不需要同步 如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线 ...

  5. 纯CSS圆环与圆

    1. 两个标签的嵌套: <div class="element1"> <div class="child1"></div> ...

  6. 【XSS】再谈CSP内容安全策略

    再谈CSP内容安全策略 之前每次都是想的很浅,或者只是个理论派,事实证明就是得动手实践 参考 CSP的用法 官方文档 通过设置属性来告诉浏览器允许加载的资源数据来源.可通过Response响应头来设置 ...

  7. Linux:find命令中

    默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('\n'), 因此我们看到的 find 的输出都是一行一行的: ls -l total 0 -rw-r--r-- 1 root ...

  8. 关于ssh-keygen 生成的key以“BEGIN OPENSSH PRIVATE KEY”开头

    现在使用命令 ssh-keygen -t rsa  生成ssh,默认是以新的格式生成,id_rsa的第一行变成了"BEGIN OPENSSH PRIVATE KEY" 而不在是&q ...

  9. ANTLR 简介

    <ANTLR 4权威指南>由机械工业出版社出版,有兴趣的读者推荐购买阅读. 本专题大多内容来源于我读<ANTLR 4权威指南>的随手笔记以及个人实践,仅供参考学习,请勿用于任何 ...

  10. 帮助IT业告别内卷,哪项变革最能被寄予厚望?

    近日,中国软件行业协会发布<2021年中国低代码/无代码市场研究报告>,其中提到:我国低代码整体市场规模已达数十亿规模,并将在未来五年保持49.5%的复合增长率.低代码成为整个中国ICT产 ...