第一种方式:只是子标签在换,内容的布局不换。类似于下面这种
代码为:
import React,{ Component } from 'react'; import './index.scss'; import axios from 'axios'; class App extends Component{ constructor(props){ super(props); this.state={ datalist:{}, tabs:[ {tabName:'取票',icon:'icon-compass',id:1}, {tabName:'3D',icon:'icon-success',id:2}, {tabName:'停车',icon:'icon-operation',id:3}, {tabName:'优惠',icon:'icon-trade',id:4}, {tabName:'交通',icon:'icon-component',id:5} ], currentindex:1, tabContent:'', } tabChoiced(id){ this.setState({ currentindex:id }); switch(id){ case 1: this.setState({ tabContent:'取票暂时没有' }); break; case 2: this.setState({ tabContent:'3D暂无信息' }); break; case 3: this.setState({ tabContent:'停车暂无信息' }); break; case 4: this.setState({ tabContent:'优惠暂无信息' }); break; case 5: this.setState({ tabContent:'交通暂无信息' }); break; } } render(){ // console.log(this.props) var _this=this; var tabList=this.state.tabs.map(function(res,index){ // 遍历标签页,如果标签的id等于tabid,那么该标签就加多一个active的className var tabStyle=res.id==this.state.currentindex ? 'col-xs-2 active' : 'col-xs-2'; return <li className={tabStyle} key={index} onClick={this.tabChoiced.bind(_this,res.id)}> <div className="li-w"> <div className="li-warp"><i className={"iconfont img_top " + res.icon}></i><i className={"iconfont img_bot " + res.icon}></i><span>{res.tabName}</span></div> </div> </li> }.bind(_this)); return ( <div className="cinema-view cinema-detail-view"> <div className="row other-detail-box"> <ul className="list-inline clearfix"> {tabList} </ul> <div className="li-box"> <p>{this.state.tabContent}</p> </div> </div> </div> ) } } export default App;
其他代码为:
import React from ‘react‘; class NewsList extends React.Component { constructor(props) { super(props); this.state = { tabs:[ {tabName:"热点新闻",id:1}, {tabName:"合作播报",id:2}, {tabName:"行业咨询",id:3}, {tabName:"运营攻略",id:4} ], currentIndex:1, }; } componentDidMount() { } tabChoiced=(id)=>{ // tab切换的方法 this.setState({ currentIndex:id }); } render(){ var _this=this; var tabList= this.state.tabs.map(function(res,index) { // 遍历标签页,如果标签的id等于tabid,那么该标签就加多一个active的className var tabStyle=res.id==this.state.currentIndex ? ‘subCtrl active‘ : ‘subCtrl‘; return <li key={index} onClick={this.tabChoiced.bind(_this,res.id)} className={tabStyle}>{res.tabName}</li> }.bind(_this)); return ( <div className="listWrap"> <ul className="subNavWrap"> {tabList} </ul> <div className="newsList"> {/**这里通用的新闻列表**/} </div> </div> ) } } export default NewsList;
本地效果为:http://localhost:8095/cinedetail/1091
原文链接:http://www.mamicode.com/info-detail-1422650.html