事件处理 及冒泡 阻止默认事件 以及tab 切换的思路
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/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/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 切换的思路的更多相关文章
- vue 事件上加阻止冒泡 阻止默认事件
		重点 vue事件修饰符 <!-- 阻止单击事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提 ... 
- JavaScript事件:事件处理模型(冒泡、捕获)、取消冒泡、阻止默认事件
		(一)事件处理模型---事件冒泡.捕获 (1)事件冒泡 24 <body> 25 <div class="warpper"> 26 <div clas ... 
- js阻止冒泡和默认事件(默认行为)详解-  jquery DefaultPrevented 函数
		<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ... 
- 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return fal的区别
		今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时 ... 
- js之阻止事件冒泡(待修改)和阻止默认事件
		阻止默认事件(event.stopPropagation()): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ... 
- javascript 阻止事件冒泡和阻止默认事件对比
		公司项目有像上图中效果的功能需求这也是很常见功能很简单功能,通过一个小例子和大家聊聊js的事件冒泡和默认事件. 先说说一般的实现方式即使用阻止事件冒泡的方式去做,给input绑定一个click事件(并 ... 
- DOM2级事件对象、添加事件、阻止默认事件、阻止冒泡事件、获取事件对象目标的兼容处理
		事件对象——兼容处理 /* * 功能: 事件对象兼容 * 参数: 表示常规浏览器的事件对象e */ function getEvent(e) { // 如果存在e存在,直接返回,否则返回window. ... 
- JS 之 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
		在前端开发中,有时我们需要阻止冒泡和阻止默认事件的发生. 一.event.stopPropagation() 阻止事件的冒泡,不让事件向documen上蔓延,但是默认事件任然会执行,当调用这个方法的时 ... 
- js阻止默认事件,如a标签跳转和事件冒泡
		禁止a标签点击跳转 <a href="http://baidu.com" onclick="return false">点我啊</a> ... 
随机推荐
- namp相关命令大全
			常用功能: -探测主机存活- 扫描端口- 探测主机操作系统信息- 检测漏洞 nmap 常用的几个参数 nmap -v ip 显示详细的扫描过程 nmap -p ip 扫描指定端口 nmap -A ... 
- Codeforces 1455G - Forbidden Value(map 启发式合并+DP)
			Codeforces 题面传送门 & 洛谷题面传送门 首先这个 if 与 end 配对的结构显然形成一个树形结构,考虑把这棵树建出来,于是这个程序的结构就变为,对树进行一遍 DFS,到达某个节 ... 
- BJ2 斜率限制器
			BJ2 斜率限制器 本文介绍斜率限制器取自于 Anastasiou 与 Chan (1997)[1]研究,其所利用的斜率限制器也是 Barth 与 Jespersen 限制器的一种修正形式,并且包含一 ... 
- 【机器学习与R语言】9- 支持向量机
			目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ... 
- python爬虫之正则表达式(用在其他地方也可)
			1. 常用的匹配规则 ### 常用的匹配规则 # \w 匹配字母.数字及下划线 # \W 匹配不是字母.数字及下划线的字符 # \s 匹配任意空白字符,等价于[\t\n\t\f] # \S 匹配任意非 ... 
- 创建一个vue实例
			创建一个vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,但是 Vue ... 
- Linux 中的五种 IO 模型
			Linux 中的五种 IO 模型 在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一 ... 
- 日常Java 2021/10/17
			今天开始Javaweb编译环境调试,从tomcat容器开始,然后mysql的下载,连接工具datagrip,navicat for mysql,然后就是编写自己的sql,安装jdbc,eclipse连 ... 
- 【讨论】APP的免填邀请码解决方案
			00x0 具体需求 app中已注册的用户分享一个含有邀请码的二维码,分享到朋友圈新用户在朋友圈打开这个这个链接下载app.新用户安装后打开app后就自动绑定邀请码要求用户不填写任何东西 朋友老板出差给 ... 
- 【并发编程】Java并发编程-看懂AQS的前世今生
			在我们可以深入学习AbstractQueuedSynchronizer(AQS)之前,必须具备了volatile.CAS和模板方法设计模式的知识,本文主要想从AQS的产生背景.设计和结构.源代码实现及 ... 
