uniapp自定义tabbar组件解决闪烁问题

uniapp自定义tabbar组件解决闪烁问题,第1张

自定义tabbar组件,根据uni-app的easycom将其精简为- 步。只要组件安装在项目的components目录下或uni_ modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。

<template>
	<view class="tabbar-box">
		<u-tabbar :value="value1" :fixed="false" :placeholder="false" :safeAreaInsetBottom="false">
			<u-tabbar-item v-for="(Item, Index) in list" :key="Index" :text="Item.title" :icon="Item.icon"
				@click="tabbarclick(Item,Index)"></u-tabbar-item>
		</u-tabbar>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				value1: 0, // tabbar--高亮数据
				// tabbar--data数据
				list: [{
						title: '首页',
						url: 'pages/index/index',
						icon: 'home'
					},
					{
						title: '项目进度',
						url: 'pages/schedule/index',
						icon: 'photo'
					},
					{
						title: '项目投资',
						url: 'pages/investment/index',
						icon: 'play-right'
					},
					{
						title: '我的',
						url: 'pages/Personal/index',
						icon: 'account'
					},
				]
			}
		},

		created() {
			let pages = getCurrentPages() //获取加载的页面
			let currentPage = pages[pages.length - 1] //获取当前页面的对象
			let url = currentPage.route //当前页面url
			console.log(url)
			this.list.forEach((e, i) => {
			console.log(e.url == url)
				if (e.url == url) {

					this.value1 = i
				}
			})
		},
		methods: {
			// tabar--点击事件
			tabbarclick(val, i) {
				let pages = getCurrentPages() //获取加载的页面
				let currentPage = pages[pages.length - 1] //获取当前页面的对象
				let url = currentPage.route //当前页面url
				// 判断路由跟url是否不同
				if (url != val.url) {
					uni.switchTab({
						url: '/'+val.url,
					})
				}
			}
		},
	}
</script>

<style lang="scss" scoped>

</style>

在pages.json配置tabbar,路径设置成一样

"tabBar": {
		"backgroundColor": "#F3F2F0",
		"borderStyle": "white",
		"display": "none",
		"list": [{
				"text": "",
				"pagePath": "pages/index/index"
			},
			{
				"text": "",
				"pagePath": "pages/schedule/index"
			},
			{
				"text": "",
				"pagePath": "pages/investment/index"
			},
			{
				"text": "",
				"pagePath": "pages/Personal/index"
			}

		]
	}

在app里面设置隐藏tabbar

	onShow: function() {
		uni.hideTabBar()
	},

自定义组件组件种使用uni.switchTab跳转页面

uni.switchTab({
						url: val.url,
					})

完美解决

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1297254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存