首頁 >web前端 >js教程 >react實作選取li高亮步驟詳解

react實作選取li高亮步驟詳解

php中世界最好的语言
php中世界最好的语言原創
2018-05-24 13:40:312711瀏覽

這次帶給大家react實作選取li高亮步驟詳解,react實作選取li高亮的注意事項有哪些,以下就是實戰案例,一起來看一下。

雖然只是一個簡單的功能,還是記錄一下比較好。頁面上有很多個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[i]});
        }
        return 
    {itemList}
    } }

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

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

React結合TypeScript與Mobx步驟詳解

React-router v4使用步驟詳解

#

以上是react實作選取li高亮步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn