今天看了老长时间递归组件,官方给的教程太简便了,根本看不出到底怎么用。于是自己查网摸索了一下,这儿只把核心思想写出来。
效果如下图,点击后打开二级菜单,再点击后打开三级。
//js //引子 //思想:当v-if=‘false'时,循环时进行的。所以一开始就设置为false。 ggg:{ name:'gs', template:` <div> <p @click.stop='show=!show'>我是p标签</p> //这儿show必须要初始值为false,不然就是堆栈溢出,死循环。 <gs v-if='show' ></gs> //这个是循环组件。命名后当函数使。 </div> }
由于每次递归组件,就相当于实例化了一次组件。所有写在组件data中的值都是该组件专属的。
树状结构:
我们在父组件给出一个数据,子组件调用这个数据,然后子组件的子组件调用它父组件的数据,如此循环下去。只要数据结构相同,他们调用的方法相同,就行的通。当最后没有子组件的时候,
它不会报错,这个应该是被vue优化了。
思想:递归调用某个组件,而这个组件的作用就是解析出此层的数据。因此数据的格式就有技巧:
msg:[{//对此数组遍历。 js text:1, //第一层数据 ,要显示1,就要对顶层text遍历,xxx.text就得到1。 //点击‘1'弹出1-1就需要将父组件的xxx.next传给子组件。 next:[{ text:'1-1',//第二层数据 next:[{ text:'1-1-1',//第三层数据 next:[{ text:'1-1-1-1', }] }] }] },{ text:2, //第一层数据 },{ text:3, //第一层数据 }]
//html <div> <ggg :msg='msg'></ggg> //这儿写在父组件模板中。 </div> //js ggg:{ name:'gs',// 这儿必须起个名字,这个名字其实就是构造函数的名字。没有名字无法递归组件。 template:`// 构造函数的return值,模板。 <ul > <li v-for='a in text'> {{a.text}}//第一次1、2、3;第二次 1-1 ,第三次1-1-1,第四次1-1-1-1 <gs :msg='a.next'></gs> // 这儿递归用组件(构造函数),代码运行到这儿时会返回去调用。这儿有个很重要的操作,将这一层的a.text数据传到下一层去,并且改为text </li> </ul>`, props:['msg'],//这个是接收父组件过的值 }
到此基本概念已经齐全了。
点击1 出现1-1:
<li v-for='a in msg' @click.stop.self='show=!show'>// 在li标签添加一个点击事件,改变show的值。 {{a.text}} <gs :msg='a.next' v-if='show' ></gs> //官网上说了,这儿是show为true才会递归。就是解析下一次数据。 </li>
点击1想出现1-2:修改data的值,从顶层数据出现1 2 3可以推断出来。
全代码:
<template > <div> <ggg :msg='msg'></ggg> //组件使用 父组件传msg 子组件接收(:msg) </div> </template> <script> export default { //这儿用的脚手架,若是普通文件,这儿就是new Vue({}) data(){ return { msg:[{ text:1, next:[{ text:'1-1', next:[{ text:'1-1-1', next:[{ text:'1-1-1-1', }] }] },{ text:'1-2' //1-2写在这儿,第二层数据数组中的a[1].text就是‘1-2' }] },{ text:2, },{ text:3, }] } }, components:{ ggg:{ name:'gs', template:` <ul > <li v-for='a in msg' @click.stop.self='show=!show'> {{a.text}} <gs :msg='a.next' v-if='show' ></gs> </li> </ul>`, props:['msg'], data(){ return { show:false } } } } } </script>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现,包括了Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现的使用技巧和注意事项,需要的朋友参考一下 写在前面 首先,本篇文章所开发的组件并非一个已经开源的上线组件,所以如果你急于需要一个插件来只做你的项目,那么并不能带给你及时的帮助。这个组件的开发预计写两篇文章,一遍写组件,一篇写组件逻辑。这篇文章也是
本文向大家介绍java利用递归调用实现树形菜单的样式,包括了java利用递归调用实现树形菜单的样式的使用技巧和注意事项,需要的朋友参考一下 一:需求 现有以需求就是把某一个帖子的全部评论展示出来。 二:分析 关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论。 三:思路 先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论。 递归本质:程序调用自身的编
本文向大家介绍vuejs使用递归组件实现树形目录的方法,包括了vuejs使用递归组件实现树形目录的方法的使用技巧和注意事项,需要的朋友参考一下 上篇文章我提到了通讯录的开发,里面的目录使用了vue的递归组件实现的树形目录,这篇文章就来讲讲如何实现树形目录吧! 首先实现效果如下,觉得菜单还是比较nice的是吧: 这边数据调用的是数据库的数据的,需要数据库进行数据的构造,这里涉及到java的构造多叉树
本文向大家介绍Vue.js组件tree实现无限级树形菜单,包括了Vue.js组件tree实现无限级树形菜单的使用技巧和注意事项,需要的朋友参考一下 分享一段用 <ul>和<li>标签实现tree的代码,可能写的不是很好,如果大家有更好的希望分享下。 代码看这里喽: html代码: js代码: 效果图: 本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。 关于vue.js组件的教程
本文向大家介绍vue递归组件实战之简单树形控件实例代码,包括了vue递归组件实战之简单树形控件实例代码的使用技巧和注意事项,需要的朋友参考一下 1、递归组件-简单树形控件预览及问题 在编写树形组件时遇到的问题: 组件如何才能递归调用? 递归组件点击事件如何传递? 2、树形控件基本结构及样式 3、组件目录及数据结构 目录结构 vue-tree VueTree.vue TreeItem.vue 树
本文向大家介绍Java递归如何正确输出树形菜单,包括了Java递归如何正确输出树形菜单的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java递归输出树形菜单的具体代码,供大家参考,具体内容如下 首先我们要建立树节点的类: 输出树形菜单类: 然后我们来测试一下: 输出的结果: 浏览器效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。