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. 测试平台系列(85) 把redis运用到实战中

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们让支持了前置条件 ...

  2. LGV 引理小记

    讲个笑话,NOI 之前某场模拟赛让我知道了这个神奇的科技,于是准备 NOI 之前学完,结果鸽着鸽着就鸽掉了,考 day1 之前一天本来准备花一天时间学的,然后我就开玩笑般地跟自己说,这么 trivia ...

  3. 洛谷 P6349 - [PA2011]Kangaroos(KDT+标记下放)

    洛谷题面传送门 KDT 上打标记的 hot tea. 考虑将询问 \(A,B\) 看作二维平面直角坐标系上的一个点 \((A,B)\),那么我们这样考虑,我们从左到右扫过全部 \(n\) 个区间并开一 ...

  4. Atcoder Typical DP Contest S - マス目(状压 dp+剪枝)

    洛谷题面传送门 介绍一个不太主流的.非常暴力的做法( 首先注意到 \(n\) 非常小,\(m\) 比较大,因此显然以列为阶段,对行的状态进行状压.因此我们可以非常自然地想到一个非常 trivial 的 ...

  5. DirectX12 3D 游戏开发与实战第七章内容(上)

    利用Direct3D绘制几何体(续) 学习目标 学会一种无须每帧都要刷新命令队列的渲染流程,以此来优化性能 了解另外两种根签名参数类型:根常量和根描述符 探索如何在程序中生成和绘制常见的几何体:如栅格 ...

  6. python故障

    问题: ImportError: No module named dns.resolver 解决: 通过包管理工具pip安装dnspython pip install dnspython

  7. 毕业设计之zabbix+微信企业号报警

    需要自己申请一个微信企业号 创建应用 AgentId 1000003 Secret SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg 企业ID(自己再企业信息里面 ...

  8. Qt最好用评价最高的是哪个版本?

    来源: http://www.qtcn.org/bbs/read-htm-tid-89455.html /// Qt4:    4.8.7      4.X 系列终结版本 Qt5 :   5.6 LT ...

  9. linux 定时导出sql查询结果文件

    如果想在服务器端生成sql查询结果的txt文件. 大体思路就是: 1.创建一个到处txt文件的sql脚本. set ARRAYSIZE 50 --从数据库往客户端一次发送记录数 set linesiz ...

  10. Xcode中匹配的配置包的存放目录

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport