- 博客(363)
- 收藏
- 关注

原创 弹性盒子(display: flex)布局超全讲解|Flex 布局教程
弹性布局(Flex布局)是一种现代的CSS布局方式,通过使用display: flex属性来创建一个弹性容器,并在其中使用灵活的盒子模型来进行元素的排列和定位。
2023-06-16 14:25:52
162236
21

原创 vue面试题八股文简答大全 让你更加轻松的回答面试官的vue面试题
此时我们就需要先根据真实dom生成虚拟dom, 当虚拟dom某个节点的数据改变后会生成有一个新的Vnode, 然后新的Vnode和旧的Vnode作比较,发现有不一样的地方就直接修改在真实DOM上,然后使旧的Vnode的值为新的Vnode。这种方法比直接操作真实DOM要快得多。从源码中可以知道,Vue判断两个节点是否相同时主要判断两者的key和元素类型等,因此如果不设置key,它的值就是undefined,则可能永 远认为这是两个相同的节点,只能去做更新操作,这造成了大量的dom更新操作,明显是不可取的。
2023-03-30 10:20:45
13085
64

原创 Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能
其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动的事件,然后根据上滚还是下滚实现图片的缩放。
2023-03-08 11:52:46
11397
14

原创 CSS奇思妙想之-利用CSS裁剪(clip-path)完成各种图形
css裁剪(clip-path)这个属性平时率非常低。但是其实clip并不是CSS3的新属性,很早就开始出现了。CSS裁剪的这一概念最早是在CSS 2.1时代由clip属性引入,但该属性的限制非常多。裁剪初期只能应用于绝对定位的元素,并且只能裁剪成矩形。而在CSS3中,提供了强大的clip-path属性,突破了clip属性的众多限制。clip-path能够让你指定一个网页元素的显示区域,而不是显示全部。
2023-03-04 13:05:40
11519
10

原创 2023年超全前端面试题-背完稳稳拿offer(欢迎补充)
一个域下的js脚本未经允许的情况下,不能访问另一个域下的内容。通常判断跨域的依据是协议、域名、端口号是否相同,不同则跨域。同源策略是对js脚本的一种限制,并不是对浏览器的限制,像img,script脚本请求不会有跨域限制。
2023-02-28 11:39:18
13396
30

原创 CSS架构之BEM设计模式
B代表:Black(块),独立实体,独立的意义,每个页面都可以看做是多个Block组成,见下图1-1;E代表:Element(元素),block 的一部分,没有独立意义,是组件下的一个元素,多个元素形成一个组件,见下图1-2;M代表: Modifier (修饰符),block 或 element 上的标记,是描述Block或Element的属性或状态,同一Block或Element可以有多个Modifier。
2023-02-08 17:29:08
9398
29

原创 web前端面试技巧-如何自我介绍?如何应对hr?
问题来,如何做好自我面试?说清楚四点:①个人信息:包括你的姓名、年龄、专业、毕业学校②职业经验:说清楚自己往期的工作经验,待过哪些公司,具体做过什么,如果是应届毕业生,有实习经验说实习经验,没有的话也可以重点说自己在学校内接触过的项目经验。③技术能力:简单介绍自己的技术栈,告诉对方你会什么?并且最擅长的技术是什么?比如性能优化、高并发、系统架构设计等等。比较对方考察你也是为了评估你与招聘岗位的匹配度。所以,可以针对对方公司招聘岗位的岗位职责去重点突出自己的能力。④自我评价:记得要说优势!
2022-11-09 13:24:21
11713

原创 纯css爱心代码-最近超级火的打火机与公主裙中的爱心代码(简易版)
theme: cyanosis最近打火机与公主裙中的爱心代码超级火,看着特别心动,让俺用css来写个简易版!!!先看效果:代码拆解:主要是分为3大部分分子颗粒爱心动画代码实现:分子颗粒分子颗粒其实非常简单,主要是使用到的就是css的渐变:linear-gradient,然后再用css3新出的background-size来控制颗粒之间的距离。控制linear-gra...
2022-11-06 21:14:00
10580

原创 前端优化之高并发处理
大部分的高并发处理基本都是在后端处理,但是在部分特殊情况下,后端无法阻止用户行为,需要前端做配合。例如在抢购、秒杀等场景。高并发是什么?对此,我们首先需要简单的去了解一下,高并发是什么?高并发是指在极短单位时间内,有很多用户同时的访问同一 API 接口或者 Url 地址,造成极多个请求同时发起到服务器。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。浏览器请求限制浏览器在向后端...
2022-01-21 14:46:00
6650

原创 Backdrop Filter
CSS 滤镜 : backdrop-filterbackdrop filter属性允许我们使用css对元素后面的内容应用过滤效果。滤镜:名称:方法案例:效果:blur()模糊: blur(5px)brightness()亮度: brightness(1.4);contrast()对比度:...
2020-12-26 16:11:00
15624
2
原创 vue报错:Uncaught runtime errors: × ERROR ResizeObserver loop completed with undelivered notifications.
问题:视窗尺寸变化或内容更新时,会频繁触发高度计算,导致 ResizeObserver 循环。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。el-table 组件使用了动态高度计算。🛠️1.用了动态的判断,导致的报错。
2025-02-07 15:50:47
390
1
原创 vue3+js+element,el-drawer的v-model不能直接赋值问题解决:ERROR in ./src/views/basic/product/modify.vue?vue&type=t
2 | < el-drawer v-model=“innerDrawer” size=“60%” title=“详情内容” :append-to-body=“true”>遇到的错误是因为在 组件中使用了 v-model 绑定 innerDrawer,而 v-model 通常用于双向绑定组件的值。这里是用到的 props: 的值。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。为了修复这个问题,需要在data中承接一下,即可。
2025-01-21 13:34:04
541
1
原创 解决 React 中 Ant Design 表单字段值设置错误的完整指南
这种错误是常见的问题。这通常意味着尝试在字段渲染之前设置其值。本文将帮助你理解为什么会出现这个错误,并提供解决方案来避免该问题。来注册字段后,才能安全地设置其初始值或其他属性。这保证了表单的正确性和一致性,并避免了字段值设置的错误。来注册表单字段,并在其中设置了初始值。这使得表单字段能够正确渲染,避免了之前的错误。),就会引发该错误。要解决这个问题,需要确保在渲染表单字段之前先使用。来注册表单字段,这样才能正确处理字段的值。,即在字段渲染之前,它们必须先被注册。当在使用AntDesign的表单时,
2025-01-20 14:51:14
733
原创 vue3+js+elementplus报错:ERROR formEl.validate is not a function TypeError: formEl.validate is not a fu
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。formEl改成 this.$refs[formEl]即可。
2025-01-16 11:15:51
959
原创 vue3+js使用elementplus的ElMessage弹窗报错:ElMessage‘ is not defined.eslintno-undef
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。改成elementui的写法就行。
2025-01-16 11:08:03
768
原创 vue3路由history问题报错: ERROR Invalid options in vue.config.js: “base“ is not allowed npm ERR! code
2.给路由添加报错回调(router.js / router.ts / router.index)1.在路由中添加内容(router.js / router.ts / router.index)欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。3.在vue.config.js中添加配置。
2025-01-13 11:32:25
406
原创 算法练习题目:小E在一个游戏中遇到了 n n个按顺序出现的怪物。每个怪物都有其特定的血量 h i h i 和攻击力 a i a i 。小E的初始血量为 H H,攻击力为 A A。游戏规
输入:n = 5, H = 10, A = 10, h = [6, 9, 12, 4, 7], a = [8, 9, 10, 2, 5]输入:n = 4, H = 20, A = 25, h = [10, 15, 18, 22], a = [12, 18, 20, 26]输入:n = 4, H = 20, A = 25, h = [22, 18, 15, 10], a = [26, 20, 18, 12]3.为了保持战斗节奏,要求击败的怪物序列中,后一个怪物的血量和攻击力都必须严格大于前一个怪物。
2024-12-26 11:15:28
498
原创 算法练习题目:问题描述 在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 a a 和另外两张相同牌面值的牌 b b。如果两个人同时拥有“葫芦”,
说明:array数组中可组成4个葫芦,分别为[6,6,6,8,8],[6,6,6,5,5],[8,8,8,6,6],[8,8,8,5,5]。剩下的3个葫芦的大小关系为[8,8,8,5,5]>[6,6,6,8,8]>[6,6,6,5,5],故返回[8,5]因为三张相同牌面值的A > K,故[A,A,A,K,K]比[K,K,K,A,A]要大,返回[1,13]说明:可组成2个葫芦,分别为[9,9,9,6,6]和[6,6,6,9,9],由于[9,9,9,6,6]的牌面值为39,大于37,故返回[6,9]
2024-12-26 11:06:13
519
原创 算法练习题目:问题描述 小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选
小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。例如对于[123, 456, 789],14个符合条件的数为:147 149 158 167 169 248 257 259 268 347 349 358 367 369。numbers: 一个由多个整数字符串组成的列表,每个字符串可以视为一个数字组。小M需要从每个数字组中选择一个数字。输入:numbers = [123, 456, 789]输入:numbers = [14329, 7568]
2024-12-25 16:03:48
544
原创 算法练习题目:小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉
小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。输入:s = “0000123456789.99”输入:s = “1294512.12412”输出:‘1,294,512.12412’输出:‘123,456,789.99’输入:s = “987654321”输出:‘987,654,321’
2024-12-25 16:01:16
616
原创 算法练习题目:小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以先购买完食物后再消
幸运的是,小R在路途中每天都会经过一个补给站,可以先购买完食物后再消耗今天的1份食物。然而,每个补给站的食物每份的价格可能不同,并且小R在购买完食物后最多只能同时携带 K 份食物。现在,小R希望在保证每天食物消耗的前提下,以最小的花费完成这次徒步旅行。输入:n = 6 ,k = 3 ,data = [4, 1, 5, 2, 1, 3]输入:n = 5 ,k = 2 ,data = [1, 2, 3, 3, 2]行业内幕,洞察先机。输入:n = 4 ,k = 1 ,data = [3, 2, 4, 1]
2024-12-25 15:55:45
569
原创 为什么使用 toISOString() 后时间变成了英国时间?怎么改成国内时间
假设需要根据用户设定的充电时间来生成计划开始和结束的时间。: 在当前时间基础上增加指定的分钟数,表示充电计划的时间。方法返回的是一个基于 UTC 时间的 ISO 8601 格式的字符串。如果希望得到一个特定时区的时间字符串,而不是默认的 UTC 时间,可以使用。,最终得到的时间将是 UTC 时间(即格林威治标准时间或英国时间)。表示毫秒和时区偏移量,确保输出的时间字符串包括时区信息,例如。方法来设置时区偏移量,从而保证输出的时间符合你所在的时区。为了确保在输出时使用你想要的时区偏移量,可以在调用。
2024-12-11 18:01:03
794
原创 vue3请求接口报错:Cannot read properties of undefined (reading ‘data‘)
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。
2024-11-29 17:56:29
420
原创 vue安装使用scss报错:Failed to resolve loader: sass-loader You may need to install it. ERROR in ./src/views
vue add style-resources-loader 是一个 Vue CLI 插件命令,用于在 Vue 项目中添加 style-resources-loader。这个错误提示表明项目缺少 sass-loader,这是一个用于处理 SASS/SCSS 文件的 Webpack 加载器。dart-sass 是 node-sass 的一个更现代的替代品,推荐使用 dart-sass。2.安装 sass-loader 和 node-sass 或 dart-sass。行业内幕,洞察先机。
2024-11-29 10:23:12
515
原创 vue3项目安装指令报错:vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符:
vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如 果包括路径,请确保路径正确,然后再试一次。这个错误提示表明系统无法识别 vue 命令。这通常是因为 Vue CLI 没有正确安装或者其路径没有被添加到系统的 PATH 环境变量中。确保已经全局安装了 Vue CLI。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;如果安装成功,你应该能看到 Vue CLI 的版本号。2.检查 Vue CLI 是否安装成功。1.安装 Vue CLI。
2024-11-29 10:19:13
384
原创 vue项目安装element报错:npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm er
但是,这种做法并不推荐,因为它可能会导致运行时错误或者不兼容的行为,所以如果没有强烈需求,最好避免使用这种方法。是为 Vue 3.x 设计的 UI 库,所以如果你已经在使用 Vue 3,可以选择用。行业内幕,洞察先机。仅支持 Vue 2.x 版本,所以导致了这个依赖冲突。你有几个选择来解决这个问题,取决于你的项目需求。如果你希望强制安装这些不兼容的依赖,可以使用。会与 Vue 3 兼容,解决版本冲突。引起的,特别是在你的项目中使用了。版本,但你同时安装了。如果你需要在项目中导入。兼容,解决依赖冲突。
2024-11-28 16:40:33
1464
原创 uniapp+vue3报错:vendor.js? [sm]:3677 TypeError: “selectedOption“ is read-only at _readOnlyError (r
问题出在某个变量,在尝试修改 变量 的值时。具体来说,变量被定义为一个响应式引用(ref),但在 方法中直接赋值给它,这会导致 TypeError: “变量” is read-only 错误。确保 变量 是一个响应式引用: 在 setup 函数中,变量 已经被定义为一个 ref,在方法中直接赋值给它,而不是使用 .value 属性。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。修改 变量 方法: 将 变量 的赋值改为使用 .value 属性。
2024-11-28 14:36:47
341
原创 uniapp打开项目报错:- initialize × #initialize-error: wait IDE port timeout微信开发者工具拒绝HBuilderX访问,请根据上述提示,在微
这个问题的原因通常是因为微信开发者工具的 IDE 端口没有开启,或者 HBuilderX 没有正确配置与微信开发者工具的通信。09:19:40.337 [微信小程序开发者工具] × #initialize-error: wait IDE port timeout。09:19:40.387 微信开发者工具拒绝HBuilderX访问,请根据上述提示,在微信开发者工具中开启服务端口。09:19:09.986 [微信小程序开发者工具] - initialize。09:19:10.018 [微信小程序开发者工具]
2024-11-28 09:24:28
1006
原创 uniapp解析上传图片中的二维码
在 UniApp 中实现从相册选择图片并扫描二维码的功能,常见的应用场景包括扫码登录、扫描优惠券、读取商品信息等。如果你需要更复杂的二维码解析功能,也可以根据具体需求扩展代码,比如支持更多格式的二维码,或者更复杂的数据处理逻辑。在实际应用中,可能需要检查二维码是否有效,或根据二维码中的信息发起网络请求。通过以上的步骤,我们可以在 UniApp 中实现从相册中选择图片并扫描二维码的功能。首先,我们需要提供一个方法,允许用户从相册中选择一张图片。方法不仅支持实时扫描,还支持从相册选择的图片进行二维码解析。
2024-11-27 16:20:29
1569
原创 uniapp报错:Error: Malformed data passed to binarizer. at Object.binarize (vendor.js?
图像数据格式:jsQR 需要一个 Canvas 元素或 ImageData 对象作为输入。你当前传递的是一个文件路径(imageUrl),而不是图像数据。图像加载:你需要先将图像加载到 Canvas 中,然后再将 Canvas 的 ImageData 传递给 jsQR。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。从 Canvas 获取 ImageData 并传递给 jsQR。使用 HTMLImageElement 加载图像。将图像绘制到 Canvas 上。
2024-11-27 14:35:52
413
原创 npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 >https:/go.microsoft.com/fwlink/?2.在终端输入set-ExecutionPolicy RemoteSigned。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。如果返回Restricted就是,说明是禁止状态。在vscode输入npm指令的时候,报错。爆红就是失败了,失败就下一步。再输入npm指令就行了。
2024-11-25 11:59:59
1242
原创 vuex、vue-router实现原理
Vuex通过集中式的状态管理和单向数据流来管理应用状态,确保组件间状态的共享和同步。Vue Router通过路由表和动态路由管理 URL 变化,确保组件的渲染与 URL 的一致性。这两个库的结合使得 Vue.js 应用能够高效且结构清晰地管理状态和路由,提升了开发体验和应用性能。您好,我是肥晨。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。
2024-10-30 23:52:47
1062
原创 vue的路由的两种模式 hash与history 详细讲解
Hash 模式:适合不需要服务器支持的简单应用,兼容性好,但 SEO 和用户体验稍差。History 模式:提供更好的 SEO 和用户体验,但需要服务器的支持。选择哪种模式取决于你的项目需求、目标用户以及服务器环境。如果你需要考虑 SEO,建议使用 history 模式;如果希望快速部署,或者兼容老旧浏览器,可以选择 hash 模式。您好,我是肥晨。欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。
2024-10-30 23:50:22
1239
原创 Vue 的 MVVM 详解
MVVM 是一种设计模式,旨在将用户界面(UI)与业务逻辑分离,从而提高代码的可维护性和可测试性。Model(模型):代表应用程序的状态和数据,通常与后端 API 交互。View(视图):用户界面部分,负责数据的展示,用户与应用的交互。ViewModel(视图模型):连接 Model 和 View 的桥梁,处理 UI 逻辑,负责数据绑定。Vue 的 MVVM 结构使得开发过程更加高效和简洁。通过清晰的模型、视图和视图模型分离,Vue 让数据和视图的交互变得自然而顺畅。
2024-10-30 23:47:25
691
原创 react基础之redux快速上手环境准备
Redux 是一个状态管理库,通常与 React 一起使用,帮助开发者管理应用的全局状态。它的核心理念是将应用的状态存储在一个单一的、不可变的状态树中,并通过分发(dispatch)动作来更新状态。在reducers的同步修改方法中添加action对象参数,在调用actionCreater的时候传递参数,参数会被传递到action对象payload属性上。3.store中的入口文件 index.js 的作用是组合modules中所有的子模块,并导出store。纯函数,接受当前状态和动作,返回新的状态。
2024-10-30 23:37:19
1001
原创 PropTypes 和 TypeScript 在 React 中的比较
PropTypes 是一个内置的库,允许开发者为 React 组件的 props 定义类型和验证规则。它可以帮助识别错误的 props 类型,在开发过程中提供警告信息。TypeScript 是 JavaScript 的一个超集,提供静态类型检查。它在编译时检查类型错误,增强代码的可读性和可维护性。PropTypes 和 TypeScript 各有优缺点。选择哪种工具取决于项目的规模、团队的经验和代码的复杂性。
2024-10-30 23:28:29
1118
原创 React 组件生命周期与 Hooks 简明指南
React 的生命周期方法和 Hooks 使得组件能够在不同阶段执行特定操作。类组件通过生命周期方法管理状态和副作用,而函数组件通过 Hooks 提供了更简洁的方式来处理状态和副作用。React 类组件有几个重要的生命周期方法,这些方法可以让开发者在组件的不同阶段执行特定的代码。生命周期分为三个主要阶段:挂载、更新和卸载。好的,我们来详细讲解一下 React 类组件的生命周期方法和函数组件中的钩子(hooks)。React 16.8 引入了 Hooks,使得函数组件也能拥有类组件的状态和生命周期功能。
2024-10-30 18:37:12
1149
原创 单向数据流在 React 中的作用
单向数据流是指数据在应用程序中只按照一个方向流动。在 React 中,数据通常是从父组件流向子组件,形成一种清晰的架构模式。这种方式与双向数据绑定的模式形成对比,后者允许数据在组件之间双向流动。
2024-10-30 18:22:10
1408
2023考研数学一答案解析(一二三合集)完整版!考研数学真题和参考答案 考研数学真题及答案解析(完整版)
2024-08-05
2022年考研数学一真题 完整版!考研数学一真题和参考答案 考研数学(一)真题及答案解析(完整版)
2024-08-05
2022考研数学一真题及答案 完整版!考研数学一真题和参考答案 考研数学(一)真题及答案解析(完整版)
2024-08-05
合集打印2010-2019年考研数学一真题 40页 完整版!考研数学一真题和参考答案 考研数学(一)真题及答案解析(完整
2024-08-05
合集打印1987-2009年考研数学一真题 72页 完整版!考研数学一真题和参考答案 考研数学(一)真题及答案解析(完整
2024-08-05
考研计算机408历年真题及答案pdf汇总来了 计算机考研 计算机408考研 计算机历年真题+解析09-23年
2024-08-05
开题报告-大学生心理健康测评系统的设计与实现
2024-06-20
[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维
2024-06-20
前端开发框架-vue2+element+axios 个人财务管理系统
2024-06-20
vue2+element+axios 个人财务管理系统
2024-06-20
h5页面跳转微信小程序(最简单的方法-URL Scheme)
2023-12-21
考研历年真题2009-2022年 考研408历年真题及解析(含答案与解析)无水印
2023-04-17
计算机毕业设计后台管理系统模板 后台管理系统/刷题后台管理系统/登陆页面/科目管理/题库管理/用户管理/信息管理/账号设置
2023-03-10
上传文件-为视频播放器设置截图功能-验证表格是否为-HTMLAPP-网页设计作业-前端作业-JavaScript作业-大学生作业
2023-02-11
App捕鱼达人-捕鱼达人-HTMLAPP-网页设计作业-网页设计游戏-前端作业-JavaScript作业-大学生作业
2023-02-11
前端简历模板2 超级全的前端简历 上岸必备 求职必看 前端求职简历模板,一投即过! 因为双方皆是第一次见面,面试官首先就要了解你
2023-02-11
前端简历模板 超级全的前端简历 上岸必备 求职必看
2023-02-11
vue前端面试题-超级全的vue面试题-将近2w字!!!
2023-02-11
使用vue开发+一个论坛后台管理系统或者可以用于公司后台管理系统+可以用作毕业设计+或者公司基础框架
2023-02-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人