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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
React-Native之定时器Timer的实现代码
Oct 04 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 Javascript
layui实现checkbox的目录树tree的例子
Sep 12 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 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变量的方法
2015/06/26 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
深入分析PHP设计模式
2020/06/15 PHP
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
详解Python中的strftime()方法的使用
2015/05/22 Python
Python计算一个文件里字数的方法
2015/06/15 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
英语一分钟演讲稿
2014/04/29 职场文书
交通工程专业推荐信
2014/09/06 职场文书
刑事上诉状范文
2015/05/22 职场文书
酒店开业主持词
2015/07/02 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
2016春节放假通知范文
2015/08/18 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
公司会议开幕词
2016/03/03 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
MySQL分布式恢复进阶
2022/07/23 MySQL