stencil初次尝试

import { Component, Prop, State, Event, EventEmitter } from '@stencil/core';
@Component({
    tag: 'iwe7-nav-tabs',
    styleUrl: './iwe7-nav-tabs.scss',
    shadow: false
})
export class Iwe7NavTabsComponent {
    @Prop() list: any[] = [];
    @State() currentIndex: number = 0;
    @Event() iClick: EventEmitter;
    renderItem(item: any, index: number) {
        return (
            <li role="presentation" onClick={() => this.setCurrentIndex(index)} class={this.currentIndex === index ? 'active' : ''}>
                <a href="javascript:;">
                    {item.title}
                </a>
            </li>
        );
    }

    setCurrentIndex(idx: number) {
        this.currentIndex = idx;
        this.iClick.emit(idx);
    }

    render() {
        return (
            <ul class="nav nav-tabs">
                {this.list.map((item, index) => this.renderItem(item, index))}
            </ul>
        );
    }
}

复制代码
<iwe7-nav-tabs id="tabs"></iwe7-nav-tabs>
  <script>
    const tabs = document.getElementById('tabs');
    tabs.list = [{
      title: '在线质检',
      link: '#'
    }, {
      title: '质检结果',
      link: '#'
    }, {
      title: '质检项目',
      link: '#'
    }];
    tabs.addEventListener('iClick', (e) => {
      console.log(e);
    });
  </script>
复制代码

总结:

好用到想哭,简单易上手,框架无关web components ,扩展性及通用性极好,推荐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值