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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
Sep 24 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
原生js编写焦点图效果
Dec 08 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
React中的refs的使用教程
Feb 13 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 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 中的str_replace 函数总结
2007/04/27 PHP
php牛逼的面试题分享
2013/01/18 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
php 魔术方法详解
2014/11/11 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
浅谈js闭包理解
2019/03/28 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
中学生打架检讨书
2014/10/13 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
任命通知范文
2015/04/21 职场文书
回复函格式及范文
2015/07/14 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript