给当前元素添加一个类是通过className来处理的;

引入css;直接from XXXX
import React, { Component } from "react";
// 以内css,直接form
import "./base.css"
export class TestHanderClick extends Component {
constructor(props) {
super(props);
this.state={
num:1,
}
} hander(index){
// 传递参数
this.setState({
num:index
})
} render() {
return (
<div>
<div onClick={this.hander.bind(this,1)} className={ this.state.num==1 ? 'active' : ''}>11111111</div>
<div onClick={this.hander.bind(this,2)} className={ this.state.num==2 ? 'active' : ''}>222222</div>
<div onClick={this.hander.bind(this,3)} className={ this.state.num==3 ? 'active' : ''}>333333</div>
</div>
);
}
} export default TestHanderClick;

优化一下

import React, { Component } from "react";
// 以内css,直接form
import "./base.css"
export class TestHanderClick extends Component {
constructor(props) {
super(props);
this.state={
num:1,
listArr:[
{cont:"111",index:1},
{cont:"222",index:2},
{cont:"333",index:3},
{cont:"4444",index:4}, ]
}
} hander(index){
// 传递参数
this.setState({
num:index
})
} render() {
return (
<div>
{this.state.listArr.map(item=>{
return <div key={item.index} onClick={this.hander.bind(this,item.index)}
className={ this.state.num===item.index ? 'active' : ''}>{item.cont}</div>
})}
</div>
);
}
} export default TestHanderClick;

如果数据中没有提供索引值,你应该利用map函数中第二个参数i,它代表索引值

强烈不推荐,使用map自带的i;

最好使用数据源中的标识,

因为数据源中的标识,

它发现数据有些不需要跟新的时候,

就不会改动不变化的,将需要改动的值插入进来。

如果你使用的是map中的index,那么不管数据有没有变化,它都是将所有的数据销毁后,然后重新插入新的值;

这样的话,react的渲染速度就大不一样了;

这样key才能够提高跟新效率,

如果你一直使用的是map中的index来作为key,那你写了当白写哈(手动滑稽)

 render() {
return (
<div>
{this.state.listArr.map((item,index)=>{
return <div key={index} onClick={this.hander.bind(this,index)}
className={ this.state.num===index ? 'active' : ''}>
{item.cont}</div>
})}
</div>
);
}

react给当前元素添加一个类以及key的作用的更多相关文章

  1. 向第一个 p 元素添加一个类

    This is a heading This is a paragraph. This is another paragraph. 向第一个 p 元素添加一个类 111 <html> &l ...

  2. 用JQuery动态为选中元素添加/删除类

    在做一些tab页功能时,我们经常会见到如下样式: 即当选中一个元素时,在此元素下会添加相应的类,以示区别.今天就研究了一下如何用JQuery实现此效果. 1. HTML代码 <a id=&quo ...

  3. React map生成元素添加点击事件绑定this

    问题 使用.map(function(Item)生成元素添加onClick事件:onClick={this.provinceChange.bind(this, "99")}时,前台 ...

  4. js动态给当前点击元素添加css类

    1.页面:

  5. react+redux+generation-modation脚手架添加一个todolist

    当我遇到问题: 要沉着冷静. 要管理好时间. 别被bug或error搞的不高兴,要高兴,又有煅炼思维的机会了. 要思考这是为什么? 要搞清楚问题的本质. 要探究问题,探究数据的流动. TodoList ...

  6. JQuery_给元素添加或删除类等以及CSS()方法

    一.addClass() - 向被选元素添加一个或多个类 <script src="jquery-1.11.1.min.js"></script> < ...

  7. jQuery 学习03——HTML:捕获、设置、添加元素、删除元素、CSS类、CSS()方法、尺寸

    jQuery - 获取内容text().html() 以及 val()和属性attr() jQuery 中非常重要的部分,就是操作 DOM 的能力. DOM = Document Object Mod ...

  8. add(expr|ele|html|obj[,con]) 把与表达式匹配的元素添加到jQuery对象中。

    add(expr|ele|html|obj[,con]) 概述 把与表达式匹配的元素添加到jQuery对象中.这个函数可以用于连接分别与两个表达式匹配的元素结果集. jQuery 1.4 中, .ad ...

  9. react篇章-React State(状态)-将生命周期方法添加到类中

    将生命周期方法添加到类中 在具有许多组件的应用程序中,在销毁时释放组件所占用的资源非常重要. 每当 Clock 组件第一次加载到 DOM 中的时候,我们都想生成定时器,这在 React 中被称为挂载. ...

  10. JavaScript 操作选中当前的li元素并给他添加select类

    JavaScript 操作选中当前的li元素并给他添加select类.之前都是使用jquery写的,今天使用JavaScript写一个. <!DOCTYPE html> <html ...

随机推荐

  1. 【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?

    [云智AI运动识别小程序插件],可以为您的小程序,赋于人体检测识别.运动检测识别.姿态识别检测AI能力.本地原生识别引擎,内置10余个运动,无需依赖任何后台或第三方服务,有着识别速度快.体验佳.扩展性 ...

  2. TP5的项目能正常返回数据,但是状态码是500

    翻出来以前一个很老的TP5项目,忘记是什么功能系统了,就本地启动了一下,发现返回状态码500,开始以为是index.php被我隐藏后rewrite导致的,后来搜索了一下,发现大家也有这个问题,然后看到 ...

  3. WebLogic XMLDecoder反序列化漏洞

    目录 前言 XMLDecoder概述 XMLDecoder反序列化漏洞 漏洞复现 前言 上篇复现了T3反序列化漏洞,XMLDecoder反序列化在WebLogic中也是一类影响很大的反序化漏洞. XM ...

  4. Netty+Spring Boot 加持,解锁高性能 Web 应用

    MiniTomcat(https://github.com/daichangya/MiniTomcat) 这个项目是一个基于Netty的Java Web服务器,它提供了从简单HTTP服务器到集成Spr ...

  5. PHP之PHPExcel

    PHPExcel是一款非常强大的PHP操作EXCEL库,使用PHPExcel可以帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel. 操作: include 'PHPExce ...

  6. RabbitMQ接入之PHP

    上一篇记录下RabbitMQ的安装与管理界面,接下来开始看PHP是如何接入的 1.安装php-amqplib php-amqplib是一个纯PHP库,使用它,基于PHP的脚本客户端就可以轻松的连接和操 ...

  7. git 本地项目与远程地址建立连接

    git 本地项目与远程地址建立连接 建立好远程仓库与本地项目地址后 在本地项目文件夹内初始化git仓库 git init 复制远程项目路径地址,后执行: git remote add origin 远 ...

  8. 共建共荣金融生态!金融级数字底座“源启”与GoldenDB数据库完成互认证

    近日,中电金信金融级数字底座"源启"顺利与金篆信科GoldenDB分布式数据库完成互认证.GoldenDB数据库安全稳定运行在"源启"之上,整体性能表现卓越,进 ...

  9. django连接数据库与orm基础知识

    目录 一.django连接数据库 二.pycharm连接MySQL数据库 三.ORM简介 1.ORM概念 2.ORM由来 3.ORM的优势和劣势 ORM的优势 ORM的劣势 四.ORM基本操作 1.现 ...

  10. Linux驱动开发笔记(七):操作系统MMU介绍,操作系统操作寄存器的原理和Demo

    前言   做过单片机的都知道,写驱动是直接代码设置和读取寄存器来控制外设实现基本的驱动功能,而linux操作系统上是由MMU(内存管理单元)来控制,MMU实现了虚拟地址与芯片物理地址的对应,设置和获取 ...