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>
);
}
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。