uniapp微信小程序如何创建树形组件

这篇具有很好参考价值的文章主要介绍了uniapp微信小程序如何创建树形组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

 

1:前言

2:最终效果:

2.1一级菜单

2.2二级菜单

2.3三级菜单

3:实现方法

3.1:创建一级菜单

 3.2创建二级三级菜单

4:完整代码如下


1:前言

树形组件应用很广,应用于一些分层次的内容。vue有树形组件,但是uniapp没有树形组件,想要在uniapp使用树形组件,必须要自己写个树形组件。

2:最终效果:

微信小程序树形结构,微信小程序,uni-app,vue.js

 

2.1一级菜单

微信小程序树形结构,微信小程序,uni-app,vue.js

2.2二级菜单

微信小程序树形结构,微信小程序,uni-app,vue.js

2.3三级菜单

微信小程序树形结构,微信小程序,uni-app,vue.js

3:实现方法

3.1:创建一级菜单

建立一个view标签,遍历数据

<view class="">
		<view class="" v-for="(item,index) in list" >
			<view>{{item.title}}</view>
		</view>
	</view>

之后在前面添加两个图标,两个图标分别对应点击前和点击后的不同的图标。view绑定方法,点击view时改变状态。使用v-if根据点击获取到的状态判断展示哪个图标。同时使用flex样式使图片和文字水平排列,并设置图片大小

<view class="" v-for="(item,index) in list" >
			<view class="fold" @click="unfold(index)">
				<view class="tree-icon" v-if="item.fold">
					 <image src="../../static/u.png"class="img" ></image>
							        
				
				  </view>
						<view class="tree-icon" v-else>
											
													        
					    <image src="../../static/down.png"class="img" ></image>
				 </view>
				 <view>{{item.title}}</view>
			</view>
			
		</view>
<script>
	export default{
		data(){
			return{
				list:[
					{
						id:1,
						
						title:'七年级',
						fold:false
					},
					{
						id:2,
						
						title:'八年级',
						fold:false
					},
					{
						id:3,
						
						title:'九年级',
						fold:false
					}
				],
			}
		},
		methods:{
			unfold(index){
				this.list[index].fold=!this.list[index].fold
			}
		}
	}
</script>

css样式如下:

.img{
		width: 20px;
		height: 20px;
	}
.fold{
		display: flex;
	}

最终效果如下(设置好看的样式自己改):

微信小程序树形结构,微信小程序,uni-app,vue.js

 3.2创建二级三级菜单

使用同样方法创建二级三级目录,使用v-if根据点击状态判断是否展示。

效果如下

微信小程序树形结构,微信小程序,uni-app,vue.js文章来源地址https://www.toymoban.com/news/detail-572257.html

4:完整代码如下

<template>
	<view class="">
		
		<view class="" v-for="(item,index) in list" >
			<view class="fold" @click="unfold(index)">
				<view class="tree-icon">
					<view class="" v-if="item.fold">
						 <image src="../../static/u.png"class="img" ></image>
								        
					
					  </view>
							<view class="tree-icon" v-else>
												
														        
						    <image src="../../static/down.png"class="img" ></image>
					 </view>
					  <view>{{item.title}}</view>
				</view>
				
			</view>	
				 <view class="" v-for="(item1,index1) in item.children" v-if="item.fold" @click="foldChildren(index,index1)">
				 	<view class="fold1">
				 		<view class="tree1">
				 			<image src="../../static/d.png" class="img" ></image>
				 					        
				 		  
				 		  </view>
				 		<view class="tree-content">
				 			<text>{{item1.title}}</text>
				 		</view>
				 	</view>
				 	
				 	<view class="fold1"  v-for="(item2,index2) in item1.children" v-if="item1.fold" >
				 		<view class="tree1">
				 			
				 					        
				 		  <u-icon class="icon-children"  name="minus-circle" size="24.5px" color="#C0C0C0"></u-icon>
				 		  </view>
				 		<view>
				 			<text>{{item2.title}}</text>
				 		</view>
				 		
				 	</view>
				 	
				 </view>
			
		
			
		</view>
	</view>
</template>

<script>
	export default{
		data(){
			return{
				list:[
					{
						id:1,
						
						title:'七年级',
						fold:false,
						children:[
							{
								title:'第一单元',
								fold:false,
								children:[
									{
										title:'密度基础'
									},
									{
										title:'密度计算'
									}
								]
							}
						]
					},
					{
						id:2,
						
						title:'八年级',
						fold:false,
						children:[
							{
								title:'第一单元',
								fold:false,
								children:[
									{
										title:'密度基础'
									},
									{
										title:'密度计算'
									}
								]
							},
							{
								title:'第二单元',
								fold:false
							},
							{
								title:'第三单元',
								fold:false
							},
						]
					},
					{
						id:3,
						
						title:'九年级',
						fold:false
					}
				],
			}
		},
		methods:{
			unfold(index){
				this.list[index].fold=!this.list[index].fold
			},
			foldChildren(index,index1){
				
				this.list[index].children[index1].fold=!this.list[index].children[index1].fold
			}
		}
	}
</script>

<style>
	.tree-icon{
		display: flex;
	}
	.img{
		width: 20px;
		height: 20px;
	}
	.fold{
		
	}
	.fold1{
		display: flex;
	}
</style>

到了这里,关于uniapp微信小程序如何创建树形组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序简易弹幕组件(uniapp)

    最终效果图如下: 1. 弹幕从弹幕区域外的右边滚动到左边,那么每条弹幕的实际滚动路径长度为当前弹幕的实际宽度+整个弹幕区域的宽度 组件代码如下: 2. 本例中弹幕区域的宽度为当前屏幕的宽度。弹幕的滚动效果使用css3的animation实现,使用translateX来实现水平位移的变化

    2024年02月12日
    浏览(34)
  • uniapp微信小程序引入vant组件库

    1、首先要有uniapp项目,根据vant官方文档使用yarn或npm安装依赖: 安装完依赖如下: 2、在uniapp项目根目录下(也可以指定目录)本案例在根目录下新建:wxcomponents文件夹 !!!!必须是wxcomponents文件夹! !!!!必须是wxcomponents文件夹! !!!!必须是wxcomponents文件夹! (原

    2024年02月16日
    浏览(94)
  • uniapp 微信小程序:页面+组件的生命周期顺序

    这个uniapp的微信小程序项目使用的是 VUE2 首页只提供了一个跳转按钮。 虽然文档中将页面与组件的生命周期分开罗列,但是我们在页面和组件中所有的生命周期函数都加上,看下效果: uniap 页面生命周期 uniapp 组件生命周期

    2024年02月15日
    浏览(40)
  • uniapp实现微信小程序隐私协议组件封装

    uniapp实现微信小程序隐私协议组件封装。 隐私协议封装组件后快速调用。 diy-privacy/diy-privacy

    2024年02月07日
    浏览(44)
  • uniapp微信小程序自定义弹窗组件

    写一个能够复用的弹窗组件,内容包括: \\\"标题\\\",\\\"图片\\\",\\\"描述内容\\\",\\\"按钮\\\". 且按钮可能会有多中功能(比如: 点击按钮可能只是关闭弹窗,或者关闭弹窗并跳转) 1.创建弹窗组件 popup-view 1.小编这里考虑组件全局都有可能会用到,就在主包的 components 文件夹下创建popup-view组件 2.组件内

    2024年02月04日
    浏览(40)
  • uniapp微信小程序用户隐私保护通用组件

    微信小程序官方公告《关于小程序隐私保护指引设置的公告》 需要处理的隐私接口《插件用户隐私保护说明内容介绍》 1.2023 年 9 月 15 号之前,默认不会启用隐私相关功能,所以检测不到需要弹窗的情况,可以在 manifest.json 中配置 \\\"__usePrivacyCheck__\\\": true 之后,接口才可以检测

    2024年02月08日
    浏览(51)
  • uniapp-微信小程序,对子组件实现onShow效果

    背景:使用uni-app开发一个微信小程序,使用的vue子组件,发现在子组件里面不能使用onShow生命周期,但是可以在page里面可以调用,需要在使用uni.navigateBack()返回后,该组件能请求接口数据刷新 解决:父级组件中,在子组件上添加ref,在父级onShow中通过子组件ref调用方法 父组

    2024年02月11日
    浏览(41)
  • 微信小程序显示loading效果,微信小程序节流效果,微信小程序生命周期,微信小程序组件的创建与使用

            文档地址:wx.showLoading(Object object) | 微信开放文档         请求前 显示loading 效果 ,请求结束后隐藏loading         下拉触底需要时间比较长,但是可能会一直进行请求,我们可以 设置一个 加载状态 ,用来控制什么时候 才可以加载         当我们loading 效果为tr

    2024年02月10日
    浏览(72)
  • UniApp、微信小程序、Vue常用的UI组件

    在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架。 MintUI是饿了么团队开发基于vue.js的移动端UI框架,它包含丰富的CSS和JS组件,能够满足日常的移动端开发需要。 官网地址:

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包