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 相关文章推荐
jquery 事件对象属性小结
Apr 27 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
iframe如何动态创建及释放其所占内存
Sep 03 Javascript
jquery拖拽效果完整实例(附demo源码下载)
Jan 14 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
BootStrap modal模态弹窗使用小结
Oct 26 Javascript
JavaScript评论点赞功能的实现方法
Mar 13 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP日期处理函数 整型日期格式
2011/01/12 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
php实现简单四则运算器
2020/11/29 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
利用Python开发实现简单的记事本
2016/11/15 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
pycharm配置git(图文教程)
2019/08/16 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
关于幸福的感言
2015/08/03 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript