react实现简单选项卡功能

上代码

html:

<div id="root"></div>

css:

body {
      margin: 0;
    }

    ul {
      display: flex;
      justify-content: space-around;
      width: 500px;
      padding: 0;
    }

    li {
      list-style: none;
      height: 30px;
      line-height: 30px;
      text-align: center;
      width: calc(100% / 3);
      background: #ccc;
      color: aquamarine;
    }

    li.active {
      background: indianred;
      color: antiquewhite;
    }
    .tags>div{
      width: 500px;
      height: 480px;
      border: 2px dotted #ccc;
      display: none;
    }
    .tags>div.active{
      display: block;
    }

JavaScript:

    class Tab extends React.Component {
      state = {
        tagTitles :[{ id: 't1', title: '首页' }, { id: 't2', title: '新闻' }, { id: 't3', title: '军事' }],
        tagContents :[{ id: 'c1', content: '首页内容' }, { id: 'c2', content: '新闻页面' }, { id: 'c3', content: '军事页面' }],
        current: 0
      }

      changeCurrent(index) {
        this.setState({
          current:index
        })
      }
      render() {
        let titles = this.state.tagTitles;
        let contents = this.state.tagContents;
        let current = this.state.current;



        return (
          <div className="tags">
            <ul>
              {
                titles.map((item, index) => <li className={current === index ? "active" : ""} onClick={this.changeCurrent.bind(this,index)} key={item.id}>{item.title}</li>)
              }
            </ul>
            {
              contents.map((item, index) => <div className={current === index ? "active" : ''} key={item.id}>{item.content}</div>)
            }
          </div>
        )
      }

    }
    ReactDOM.render(<Tab />, document.querySelector('#root'))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星召唤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值