• react实现点击选中的li高亮


    虽然只是一个简单的功能,还是记录一下比较好。页面上有很多个li,要实现点击到哪个就哪个高亮。当年用jq的时候,也挺简单的,就是选中的元素给addClass,然后它的兄弟元素removeClass,再写个active的样式就搞定了。那现在用react要实现类似的操作,我想到的就是用一个currentIndex,通过判断currentIndex在哪个元素实现切换。

     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;
          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样式就搞定了。

  • 相关阅读:
    navigator
    windows事件
    js 数组
    类,屏蔽鼠标右键
    document.links[i].onclick;展示表单的输入
    手机端取消文字选中、取消图片长按下载
    ios显示一个下载banner
    js时间Date对象介绍及解决getTime转换为8点的问题
    iphone的click导致div变黑
    如何给外部引用的js文件传递参数
  • 原文地址:https://www.cnblogs.com/taxun/p/13255688.html
Copyright © 2020-2023  润新知