react给当前元素添加一个类以及key的作用
给当前元素添加一个类是通过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的作用的更多相关文章
- 向第一个 p 元素添加一个类
This is a heading This is a paragraph. This is another paragraph. 向第一个 p 元素添加一个类 111 <html> &l ...
- 用JQuery动态为选中元素添加/删除类
在做一些tab页功能时,我们经常会见到如下样式: 即当选中一个元素时,在此元素下会添加相应的类,以示区别.今天就研究了一下如何用JQuery实现此效果. 1. HTML代码 <a id=&quo ...
- React map生成元素添加点击事件绑定this
问题 使用.map(function(Item)生成元素添加onClick事件:onClick={this.provinceChange.bind(this, "99")}时,前台 ...
- js动态给当前点击元素添加css类
1.页面:
- react+redux+generation-modation脚手架添加一个todolist
当我遇到问题: 要沉着冷静. 要管理好时间. 别被bug或error搞的不高兴,要高兴,又有煅炼思维的机会了. 要思考这是为什么? 要搞清楚问题的本质. 要探究问题,探究数据的流动. TodoList ...
- JQuery_给元素添加或删除类等以及CSS()方法
一.addClass() - 向被选元素添加一个或多个类 <script src="jquery-1.11.1.min.js"></script> < ...
- jQuery 学习03——HTML:捕获、设置、添加元素、删除元素、CSS类、CSS()方法、尺寸
jQuery - 获取内容text().html() 以及 val()和属性attr() jQuery 中非常重要的部分,就是操作 DOM 的能力. DOM = Document Object Mod ...
- add(expr|ele|html|obj[,con]) 把与表达式匹配的元素添加到jQuery对象中。
add(expr|ele|html|obj[,con]) 概述 把与表达式匹配的元素添加到jQuery对象中.这个函数可以用于连接分别与两个表达式匹配的元素结果集. jQuery 1.4 中, .ad ...
- react篇章-React State(状态)-将生命周期方法添加到类中
将生命周期方法添加到类中 在具有许多组件的应用程序中,在销毁时释放组件所占用的资源非常重要. 每当 Clock 组件第一次加载到 DOM 中的时候,我们都想生成定时器,这在 React 中被称为挂载. ...
- JavaScript 操作选中当前的li元素并给他添加select类
JavaScript 操作选中当前的li元素并给他添加select类.之前都是使用jquery写的,今天使用JavaScript写一个. <!DOCTYPE html> <html ...
随机推荐
- Netty+Spring Boot 加持,解锁高性能 Web 应用
MiniTomcat(https://github.com/daichangya/MiniTomcat) 这个项目是一个基于Netty的Java Web服务器,它提供了从简单HTTP服务器到集成Spr ...
- 看不懂来打我,Vue3的watch是如何实现监听的?
前言 watch这个API大家都很熟悉,今天这篇文章欧阳来带你搞清楚Vue3的watch是如何实现对响应式数据进行监听的.注:本文使用的Vue版本为3.5.13. 关注公众号:[前端欧阳],给自己一个 ...
- 『玩转Streamlit』--可编辑表格
之前介绍过两个数据展示的组件,st.dataframe和st.table. 今天介绍的st.data_editor组件,除了展示数据的功能更加强大之外,还可以编辑数据. 1. 概要 st.data_e ...
- go 编译超时解决
转载请注明出处: 在编译go项目时,遇到依赖下载超时,异常输出如下: CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -a -ldflags '-ex ...
- vue 的provide 和 inject
1.功能说明 在开发过程中,在子组件中如何获取父组件或者祖父级的数据.这个我们之前的做法是在子组件中找到父组件实例,然后使用父组件的数据.这样其实不是很自然. 在vue 中提供了 provide 和 ...
- 第三方css动画库
https://animate.style///安装npm install animate.css --save //引入 import 'animate.css';//使用 <h1 class ...
- 论文解读《LightRAG: Simple and Fast Retrieval-Augmented Generation》
博客:https://learnopencv.com/lightrag 视频:https://www.youtube.com/watch?v=oageL-1I0GE 代码:https://github ...
- Pwn2own 2023 Tesla 利用链摘要
Pwn2own 2023 Tesla 利用链摘要 https://www.youtube.com/watch?v=6KddjKKKEL4 攻击链: 利用蓝牙协议栈自己实现的 BIP 子协议中的堆溢出, ...
- 小程序:支付的时候缺少参数:total_fee,支付失败
最开始的参数是这样写的 param: { "nonce_str": "", "package": "606eb3de10e0602 ...
- 动态 import()
动态 import() https://v8.dev/features/dynamic-import Dynamic import() 引入了一个新的类似函数的功能,相比静态的 import 提供了新 ...