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 相关文章推荐
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
jQuery 在光标定位的地方插入文字的插件
May 10 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
JS链式调用的实现方法
Mar 07 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 Javascript
Express.JS使用详解
Jul 17 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
python黑魔法之编码转换
2016/01/25 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python递归下载文件夹下所有文件
2019/08/31 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
python开发一款翻译工具
2020/10/10 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
男方父母婚礼答谢词
2014/01/25 职场文书
自我评价的范文
2014/02/02 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
实习生工作证明范本
2014/09/14 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
《少年闰土》教学反思
2016/02/18 职场文书