react使用原生js獲取點選的ul下的第幾個li 並設定className為active
阿新 • • 發佈:2018-12-14
import React from 'react' import './index.less'; import { Link } from "react-router-dom"; class Index extends React.Component { state = { current: 1, } render () { return ( <div id="menu"> <ul id="menu-list" onClick={this.getHoverIndex}> <li className="active"><Link to="/">首頁</Link></li> <li><Link to="/shop">商品</Link></li> <li><Link to="/set">設定</Link></li> <li><Link to="/salePhone">出貨詳情</Link></li> </ul> </div> ); } getHoverIndex = (e) => { var _this = this; var oList = document.getElementById("menu-list"); var li_list = oList.getElementsByTagName("li"); for( var i = 0, len = li_list.length; i < len; i ++ ){ li_list[i].className = ''; li_list[i].index = i; li_list[i].onclick = function() { _this.setState({ current: this.index, }); } li_list[this.state.current].className = 'active'; } } } export default Index
話不多說,直接上程式碼吧。
其中必須定義var _this=this,直接使用this的話指向的是函式本身(無法使用setState),而非父層。