基于vue3-vant使用递归组件实现树形结构折叠菜单

这两天在进行移动端业务功能开发的时候碰到一个树形结构的折叠菜单,

一般来说基于2-3层树形结构直接嵌套就好了,但是后端返回的数据可能无限制,所以思考过后决定采用递归组件的方法。

递归组件主要注意的是1,递归的思路,2,数据和事件的传递。我这里是采用了封装的思想。

父组件:主要用于传递原始数据进去和监听事件和参数

 子组件

<template>
  <van-collapse ref="tree" v-model="activeNames" v-for="item in props.treeData" :key="item.rowId">
    <template v-if="item.children?.length > 0">
      <van-collapse-item :name="item.rowId">
        <template #title>
          <span @click.stop="clickItem(item)">{
  {
            item.titleName
          }}</span>
       
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 安装vant组件库:在项目中执行npm install vant@next安装vant组件,next是关键字,表示安装最新的vant组件。 2. 引入vant:在Vue组件中引入vant,以按钮为例 ``` <template> <van-button type='default' round icon='search' size='medium' @click='show'> 搜索 </van-button> <van-dropdown-menu :visible.sync='visible' > <van-dropdown-item> <van-field label='sousuo' placeholder='请输入搜索内容'></van-field> </van-dropdown-item> </van-dropdown-menu> </template> <script> import {ref} from 'vue' import {VanDropdownMenu, VanDropdownItem, VanField, VanButton} from 'vant' export default{ name: 'DropdownDemo', components: { VanDropdownMenu, VanDropdownItem, VanField, VanButton }, setup(){ const visible = ref(false); const show = ()=>{ visible.value = !visible.value; } return { visible, show } } } </script> ``` 3. 样式调整:后面还可以加上一些样式调整,例如边框色、背景色、菜单宽度等。示例如下: ``` <style> .van-dropdown-menu__dropdown { background-color: #fff; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1); border: 1px solid #cfcfcf; border-radius: 4px; width: 80vw; max-width: 600px; } .van-dropdown-menu__title { border: 1px solid #cfcfcf; background-color: #fff; color: #666; border-radius: 4px; } .van-field { background-color: #fafafa; border-color: #dcdfe6; border-radius: 1.2rem; font-family: sans-serif; font-size: 0.6rem; color: #000; height: 1.6rem; line-height: 1.6rem; padding: 0 0.5rem; margin: 0 2vw; } </style> ``` 这样就可以实现基于vue3使用vant下拉菜单实现搜索了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值