微信小程序tab切换组件封装

本文档展示了如何在微信小程序中创建一个自定义组件`tabs`,该组件用于展示可切换的选项卡。组件接受`tabTitle`属性来接收父组件传递的数据,并通过`swichNav`方法处理点击切换。样式表定义了选中状态和隐藏/显示效果。在使用此组件的页面中,通过`conp.json`导入组件,并在`conp.wxml`中设置内容,实现了‘点餐’和‘订餐’两个选项卡页面。
摘要由CSDN通过智能技术生成

效果图

在这里插入图片描述

先在components里面新建组件

在这里插入图片描述

tabs.js代码

Component({
	//允许slot
	options: {
		multipleSlots: true
	},
	/**
	 * 组件的属性列表
	 */
	properties: {
		//接收父组件传递值
		tabTitle: {
			type: Array,
			value: []
		}
	},
	lifetimes: {
		attached: function () {
			//查看父组件传递的值
			console.log("父组件传递的值------------>", this.properties.tabTitle)
		}
	},

	/**
	 * 组件的初始数据
	 */
	data: {
		current: 0
	},

	/**
	 * 组件的方法列表
	 */
	methods: {
		swichNav(e) {
			if (this.data.current == e.currentTarget.dataset.index) {
				return false
			} else {
				this.setData({
					current: e.currentTarget.dataset.index
				})
			}
		}
	}
})

tabs.wxml代码

<view>
	<view class="order-list-tit">
		<view class="sel {{current==index?'on':''}}" data-index="{{index}}" wx:for="{{tabTitle}}" wx:key="*this"
			bindtap="swichNav">{{item}}</view>
	</view>
	<view>
		<view wx:for="{{tabTitle}}" wx:key="*this" class="{{current==index?'show':'hidden'}}">
			<slot name="{{index}}"></slot>
		</view>
	</view>
</view>

tabs.wxcc代码


.order-list-tit {
	width: 100%;
	height: 48px;
	border-radius: 12px 12px 0px 0px;
	display: flex;
}

.sel {
	font-size: 17px;
	font-family: PingFangSC-Regular, PingFang SC;
	font-weight: 400;
	color: #666666;
	margin-top: 13px;
	margin-left: 24px;
	text-align: center;
	position: relative;
}

.on {
	font-size: 18px;
	font-family: PingFangSC-Medium, PingFang SC;
	font-weight: 500;
	color: #303133;
	color: #121212;
	text-align: center;
}
.show {
  display: block;
}

.hidden {
  display: none;
}

.on:after {
	content: '';
	position: absolute;
	width: 24px;
	height: 5px;
	background: var(--themeItem);
	border-radius: 3px;
	top: 80%;
	left: 50%;
	transform: translate(-50%, -50%);
}

	

需要用到组件的页面进行导入JSON

conp.json代码

{
  "usingComponents": {
    "tabs":"../../components/tabs/tabs"
  }
}

conp.js代码

Page({
	data: {
		tabTitle:['点餐','订餐'],
	},
})

conp.wxml代码

<tabs tabTitle="{{tabTitle}}" tabs="{{tabs}}">
	<view slot="0">
		点餐页面
	</view>
	<view slot="1">
		订餐页面
	</view>
</tabs>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值