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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
JavaScript 特殊字符
Apr 05 Javascript
javascript下IE与FF兼容函数收集
Sep 17 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
antd日期选择器禁止选择当天之前的时间操作
Oct 29 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中curl_multi的应用
2013/07/17 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
零基础php编程好学吗
2019/10/11 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python中运行并行任务技巧
2015/02/26 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
python实现自动化上线脚本的示例
2019/07/01 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
《小松树和大松树》教学反思
2014/02/20 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
借款担保书范文
2014/05/13 职场文书
学习普通话的体会
2014/11/07 职场文书
2015年度企业工作总结
2015/05/21 职场文书
Python集合的基础操作
2021/11/01 Python