vue递归组件的使用

2023-11-20

管理系统的菜单栏,相信大家都有见过,都免不了有一级二级......等等,层级是不确定的,是后台数据决定的,这时我们就要用到递归组件了。

首先我们来谈谈 组件的name属性:

1. 递归组件的调用;

2keep-alive中使用include和exclude属性,包含或者排除指定name组件。

3. vue-devtools调试;

所以要使用递归组件,必须加上name属性,实现调用自身,使用递归时,我们要非常注意递归结束的条件,否则很容易陷入死循环,抛出错误: max stack size exceeded。

对于递归组件,往往数据会比较复杂,所以我们将递归逻辑抽离出来,作为一个单独的组件。’

首先父组件   menu.vue:


<template>
  <div class="home">
    <tree-menus :list="list"></tree-menus>
  </div>
</template>

<script>
import TreeMenus from '../components/treeMenus.vue';

export default {
  components: {
    TreeMenus,
  },
  data() {
    return {
      list: [
        {
          name: "一级菜单1",
          cList: [
            { name: "二级菜单1-1" },
            {
              name: "二级菜单1-2",
              cList: [
                { name: "三级菜单1-2-1", cList: [{ name: "四级菜单1-2-1-1" }] },
              ],
            },
          ],
        },
        { name: "一级菜单2" },
        {
          name: "一级菜单3",
          cList: [{ name: "二级菜单3-1" }, { name: "二级菜单3-2" }],
        },
      ],
    };
  },
  methods: {},
  mounted() {},
};
</script>

子组件 (递归组件)treeMenus.vue

<template>
  <div class="myTree">
    <ul>
      <li v-for="(item,index) in list" :key="index">
        <p>{{item.name}}</p>
        <div v-if="item.cList">
          <tree-menus :list="item.cList"></tree-menus>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "treeMenus",
  props: {
    list: Array,
  },
};
</script>

然后运行,来看看效果。

 用法比较简单,完结,撒花!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue递归组件的使用 的相关文章

  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • appendChild 错误:无法在层次结构中的指定点插入节点

    There is an error with the function appendChild Node cannot be inserted at the specified point in the hierarchy JS var a
  • Bootstrap 标签栏平滑移动导航按钮

    我有一个用于切换块的普通引导选项卡面板 在导航中切换块时 活动选项卡会突出显示 但现在 当我单击活动选项卡的背景时 它会立即发生变化 是否可以使切换选项卡时背景不会立即改变 而是根据需要哪个选项卡而平滑地左右移动 这可以用以下方法完成吗cs
  • 在 JavaScript 函数中加载图像

    我有获取图像像素颜色的功能 function getImage imgsrc var img img src imgsrc var imageMap new Object img load function var canvas
  • jQuery 可以操作插入的元素吗?

    我是 jQuery 的新手 我认为 jQuery 可以操作由代码添加的元素是合理的 但我发现现在还不能 function addVideo click function publisher append div div
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • 如何将类型添加到 Vite 库构建中?

    我按照vite文档使用图书馆模式 https vitejs dev guide build html library mode我能够生成一个工作组件库 我创建了该项目vue ts预设 在我的组件中 我定义了道具及其类型 并使用了一些接口 但
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • fadeOut() 和slideUp() 同时进行?

    我已经发现jQuery 淡出然后滑动 https stackoverflow com questions 734554 jquery fadeout then slideup这很好 但不是那个 我怎么能够fadeOut and slideU
  • Javascript:我应该隐藏我的实现吗?

    作为一名 C 程序员 我有一个习惯 将可以而且应该私有的东西设为私有 当 JS 类型向我公开其所有私有部分时 我总是有一种奇怪的感觉 而且这种感觉并没有被 唤起 假设我有一个类型draw方法 内部调用drawBackground and d
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 如何按 Angular 表中的属性(该属性具有单个 rownspan)进行分组?

    我没有找到这个问题的合适标题 我的问题是 例如 我有一个包含两列的表 列汽车品牌和列汽车型号 我希望表是 like in this picture 换句话说 品牌名称只会出现 1 次 我的输入数组采用以下 json 格式 brand Aud
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • 使用 ng-if 改变角度方向

    我想通过单击将方向从 rtl 更改为 ltr and in 设置 html
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • 使用 File API polyfill 读取数据 URL

    我正在尝试使用文件 API 库 https github com mailru FileAPI https github com mailru FileAPI 作为不支持文件 API 的浏览器的后备 以便将文件作为数据 URL 读取并将其传
  • Jquery 以编程方式更改

    文本

    编辑 解决方案是将其添加到个人资料页面而不是性别页面 profile live pageinit function event p pTest text localStorage getItem gender 我在列表视图中有一个带有一些文
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err

随机推荐

  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • Git的使用(gitbash命令创建版本库)

    1 git的安装 msysgit gitbash 2 创建repository 路径名不要含有中文 pwd 查看当前路径 cd mkdir gitLearn 创建目录 cd gitLearn 进入路径 git INIT 初始化 编程git可
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • Python学习----第十章--文件和异常及json

    1 读取文件 lstrip 删除左边空白符 rstrip 删除右边空白符 strip 删除两端空白符 window 读取文件可以用 但是在字符串中 是被当作转义字符来使用 经过转义之后可能就找不到路径的资源了 例如 t会转义为tab键 这里
  • Protobuf安装步骤

    今天看Brpc开源代码的时候 看到了里面提到了google开源的protobuf的数据序列化和反序列工具 所以特地下了源码 试着看下一个简单的使用过程 1 protobuf的介绍 google protobuf是一个灵活的 高效的用于序列化
  • 【python】调用Matplotlib库绘制扇形图(饼图)

    代码部分 扇形图 import matplotlib pyplot as plt import matplotlib as mpt mpt rcParams font family fangsong labels apple orange
  • GIT高级使用技巧

    GIT高级使用技巧 导出GIT日志到文件 按照 lt 哈希 gt lt 作者名 gt lt 作者邮箱地址 gt lt 作者日期 gt
  • 零基础新手小白学编程必会的100个代码

    前言 我记得刚开始接触编程的时候 觉得太难了 也很好奇 写代码的那些人也太厉害了吧 全是英文的 他们的英文水平一定很好吧 他们是怎么记住这么多代码格式的 而且错了一个标点符号 整个程序都会有影响 一个程序几千行 错一个标点符号都不行这也太难
  • leetcode-分割字符串的方案数

    给你一个二进制串 s 一个只包含 0 和 1 的字符串 我们可以将 s 分割成 3 个 非空 字符串 s1 s2 s3 s1 s2 s3 s 请你返回分割 s 的方案数 满足 s1 s2 和 s3 中字符 1 的数目相同 由于答案可能很大
  • 密码学理论10:密钥管理和公钥革命

    加密密钥分发 对称密码 依赖于秘密密钥的安全分发 需要存储和管理大量密钥 在开放 公共系统中遇到严重问题 部分解决方案 密钥分发中心 KDC 某些服务器 密钥分发中心 KDC 将密钥 提供 给用户 它与每个用户共享一个秘密密钥 长期密钥 并
  • 计算机系统攻击 ms17-010漏洞利用技术 永恒之蓝复现

    概述 MS17 010是指微软于2017年发布的一个安全公告编号为MS17 010的漏洞 也被称为 EternalBlue 该漏洞影响了微软的Windows操作系统 并且被发现可被利用来进行远程代码执行攻击 这个漏洞的危险性在于它允许攻击者
  • 基于Docker搭建FastDFS分布式文件系统

    1 镜像拉取 docker pull morunchang fastdfs 2 运行 docker run d name tracker net host morunchang fastdfs sh tracker sh 3 运行stora
  • Python下拉选框

    看了我密码器讲解的朋友们一定知道 里面有个叫下拉选框的知识 今天我就来讲讲下拉选框 from PyQt5 QtWidgets import QWidget QLabel QComboBox QApplication import sys c
  • 数据分箱3——决策树分箱(有监督)

    思路比较简单 将某一列数据作为训练集 将label作为结果 直接训练一个决策树 然后根据决策树的分裂节点的阈值作为分箱的依据 sklearn的决策树文档 https scikit learn org stable modules gener
  • CSS 实现不规则元素的阴影

    大伙在工作中 尤其写页面样式 相信很多地方用到 box shadow 阴影属性 但是这个属性只能用到规则的元素上 亦或者说只能用到一个元素上 那当我们遇到不规则的元素时 想加阴影就比较棘手了 但是 CSS 提供了此问题的解决方案 今天 我们
  • Using TensorFlow backend.

    运行代码总是出现以下几个问题 但是代码能运行出来 问题一 Using TensorFlow backend 问题二 WARNING Logging before flag parsing goes to stderr 问题三 Spyder中
  • 【转载】三维重建(三)相机参数标定与光束平差法(Bundle Adjustment)

    https blog csdn net lhanchao article details 51867327 转载于 https www cnblogs com hhxxgdd p 11140712 html
  • 【Milvus的以文搜图】

    0 介绍 以文搜图指的是 根据文本描述 从图像数据库中检索与文本内容相似的图像数据并返回 通过在CSDN中搜索以文搜图 找到了如下两篇文章 从零到一 教你搭建 以文搜图 搜索服务 一 Zilliz Planet的博客 CSDN博客 以文搜图
  • 如何实现Obsidian笔记云同步?

    在上一篇文章使用Obsidian工具编辑 管理永久笔记 写作实践中介绍 个人免费版Obsidian仅支持在本地以Markdown文件的形式管理笔记 因此使用者只能在一台电脑上编辑 使用笔记 如果你只是在个人电脑上编辑 使用Obsidian笔
  • vue递归组件的使用

    管理系统的菜单栏 相信大家都有见过 都免不了有一级二级 等等 层级是不确定的 是后台数据决定的 这时我们就要用到递归组件了 首先我们来谈谈 组件的name属性 1 递归组件的调用 2 keep alive中使用include和exclude