react实现点击选中的li高亮的示例代码


Posted in Javascript onMay 24, 2018

虽然只是一个简单的功能,还是记录一下比较好。页面上有很多个li,要实现点击到哪个就哪个高亮。当年用jq的时候,也挺简单的,就是选中的元素给addClass,然后它的兄弟元素removeClass,再写个active的样式就搞定了。那现在用react要实现类似的操作,我想到的就是用一个currentIndex,通过判断currentIndex在哪个元素实现切换。

先上一下效果图:

react实现点击选中的li高亮的示例代码

代码:

class Category extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      currentIndex: 0
    }
    this.setCurrentIndex = this.setCurrentIndex.bind(this)
  }
  setCurrentIndex(event) {
    this.setState({
      currentIndex: parseInt(event.currentTarget.getAttribute('index'), 10)
    })
  }
  render() {
    let categoryArr = ['产品调整', '接口流量', '负载均衡', '第三方软件调整',
              '安全加固', '性能控制', '日志查询', '业务分析'];
    let itemList = [];
    for(let i = 0; i < categoryArr.length; i++) {
      itemList.push(<li key={i}
               className={this.state.currentIndex === i ? 'active' : ''}
               index={i} onClick={this.setCurrentIndex}
             >{categoryArr[i]}</li>);
    }
    return <ul className="category">{itemList}</ul>
  }
}

css部分

.category {
      padding-left: 0;
      &:after {
        content: '';
        display: block;
        clear: both;
      }
      li {
        float: left;
        width: 23%;
        height: 40px;
        margin-right: 10px;
        margin-bottom: 10px;
        border: 1px solid $border-color;
        list-style: none;
        color: $font-color;
        line-height: 40px;
        text-align: center;
        font-size: 14px;
        cursor: pointer;
        &.active {
          border-color: #079ACD;
        }
     }

是不是很简单呢。就是在生成这些li的时候给元素添加一个index标志位,然后点击的时候,把这个index用event.currentTarget.getAttribute('index')取出来,然后去设置currentIndex的值,再写一写css的active样式就搞定了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 Javascript
使用原生的javascript来实现轮播图
Feb 24 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
ajax与jsonp的区别及用法
Oct 16 Javascript
vue如何限制只能输入正负数及小数
Jul 04 Javascript
微信小程序中weui用法解析
Oct 21 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
Apr 07 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
Node.js文本文件BOM头的去除方法
Nov 22 Javascript
浅谈Webpack 是如何加载模块的
May 24 #Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 #jQuery
详解javascript中的变量提升和函数提升
May 24 #Javascript
JavaScript轮播停留效果的实现思路
May 24 #Javascript
vue2单元测试环境搭建
May 24 #Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 #Javascript
vue组件name的作用小结
May 23 #Javascript
You might like
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP7常量数组用法分析
2016/09/26 PHP
js传值 判断
2006/10/26 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
angularjs基础教程
2014/12/25 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
python实现机器人行走效果
2018/01/29 Python
django允许外部访问的实例讲解
2018/05/14 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
Python列表list操作相关知识小结
2020/01/29 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
化学教育专业自荐信
2014/07/04 职场文书
客户答谢会活动方案
2014/08/31 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
大学生入党群众意见书
2015/06/02 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS