Vue使用组件递归实现评论盖楼功能笔记
时间:2022-07-24
本文章向大家介绍Vue使用组件递归实现评论盖楼功能笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.如何让一个组件自己显示自己?
步骤:
- 1.在组件内设定 name 属性
- 2.使用这个 name 属性作为标签在组件自己的template里面渲染
- 3.注意为了避免死循环,需要指定终止条件
下面是一个vue脚手架创建的示例
如图:
现在可以将这个组件引入到home中看看效果
就有了下图效果
2.用组件递归实现评论盖楼的功能
目标:将下面这段评论数据以楼层的形式渲染到页面
comments: [
// parent 为回复的用户信息
{
content: "奥利给,兄弟萌",
user: "王尼玛",
// 第一层楼
parent: {
content: "蜜汁小汉堡,干了噢",
user: "老八",
},
},
{
content: "一giao窝里giao giao",
user: "小阿giao",
// 第一层楼
parent: {
content: "你不去参加中国新说唱可惜了",
user: "野马",
// 第二层楼
parent: {
content: "画画的baby,画画的baby,奔驰的小野马和带刺的玫瑰",
user: "老giao",
// 第三层楼
parent: {
content: "去参加新说唱,有推荐学的歌没?",
user: "药水",
},
},
},
},
{
content: "谁TM买小米儿!",
user: "铁蛋",
},
]
2.1-用vue脚手架搭建一个基本的结构
创建两个组件:
Comments:展示用户评论的组件
Floor:展示用户回复的用户评论(即我们需要递归的组件)
2.2-在Home首页引入Comments组件,进行第一层评论数据渲染
2.3-Comments组件获取评论数据进行渲染
假设comments为后台获取的评论数据
页面上就可以渲染出第一层的评论数据
2.4-引入Floor递归渲染回复用户的楼层
当评论数据中有parent的时候意味着有回复用户信息,因此需要引入Floor组件进行递归渲染这些数据,因为我们无法预知它一共有多少层
2.5-Floor组件接收Comments传递过来的数据,递归渲染
现在页面显示就是如下样式:
2.6-楼层深度计算
a.在Floor组件中定义一个calcuFloorDeep计算楼层深度的方法,计算楼层深度,该方法接受两个参数:
第一个参数:当前评论数据是否含有parent对象(即是否有回复用户,如果有就再次调用该方法)
第二个参数:接收当前楼层数
b.再定义一个计算属性,调用calcuFloorDeep方法,传入当前数据的parent与初始楼层1
差不多效果就完成了:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 记一次Linux计划任务cron无结果的排查过程
- 一文学会使用 CSS 中的 min(), max(), clamp() 以及它们的使用场景用例
- 5 个 JS 数组技巧可提高你的开发技能
- 一个有意思的方案:不借助后台和 JS ,只用 CSS 让一个列表编号倒序,你会怎么做?
- 关于MySQL LOAD DATA特性的利用与思考
- NHibernate 缓存
- 渗透测试 | 突破前端JS加密限制
- 使用 Task 简化异步编程
- Task 编程中的异常处理
- AngularJS 中的 factory、 service 和 provider
- 设计模式之适配器模式
- 设计模式之组合模式
- MvvmCross 框架中的数据绑定语法
- Vivado IP核锁定的解除方法
- Flutter Dojo设计之道——骚气的闪屏动画是如何实现的