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. Python基础笔记3

    高级特性 代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.代码越少,开发效率越高. 1.切片 切片(Slice)操作符,取一个list或tuple的部分元素非常常见. 列表 L = ...

  2. Perl语言入门14-17

    ---------第十四章 字符串与排序------------------- index查找子字符串 my $stuff = "howdy world!"; my $where ...

  3. R数据科学-1

    R数据科学(R for Data Science) Part 1:探索 by: PJX for 查漏补缺 exercise: https://jrnold.github.io/r4ds-exercis ...

  4. WSL + MobaXterm 取代虚拟机

    windows子系统安装默认C盘,这里我们直接下载安装文件安装在我们指定的目录. 1.先去官方网站下载安装文件:https://docs.microsoft.com/zh-cn/windows/wsl ...

  5. 你不知道的iostat

    1.       作用 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况 ...

  6. perl 获取目录信息

    1 #!/usr/bin/perl -w 2 use strict; 3 use FindBin qw($Bin $Script); 4 5 my $rp=$Bin; 6 print "th ...

  7. CSS区分Chrome和Firefox

    CSS区分Chrome和FireFox 描述:由于Chrome和Firefox浏览器内核不同,对CSS解析有差别,因此常会有在两个浏览器中显示效果不同的问题出现,解决办法如下: /*Chrome*/ ...

  8. Java实现读取文件

    目录 Java实现读取文件 1.按字节读取文件内容 使用场景 2.按字符读取文件内容 使用场景 3.按行读取文件内容 使用场景 4.随机读取文件内容 使用场景 Java实现读取文件 1.按字节读取文件 ...

  9. 安全相关,关于https

    什么是 HTTPS HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

  10. Oracle之DBMS_LOCK包用法详解

    概述与背景 某些并发程序,在高并发的情况下,必须控制好并发请求的运行时间和次序,来保证处理数据的正确性和完整性.对于并发请求的并发控制,EBS系统可以通过Concurrent Program定义界面的 ...