事件和自引用组件 vue.js

2023-12-06

我有允许 1 级线程的评论系统。意味着第一级评论看起来像 { ...内容, 线: [] } 其中线程可能有更多评论。我认为这对于自引用组件和带有插槽的列表很有用。 但过了一会儿我不知道如何连接这个东西。

SingleComment 组件如下

<template>
...  *content*

<b-button
    v-if="isCommentDeletable"
    @click="handleDelete"
</b-button>

<div v-for="item in item.thread" :key="item._id">
    <SingleComment class="ml-3"
        :item="item"
    />
</div>
</template>
...

    methods: {
        handleDelete () {
            this.$emit('remove')
        },
    }
... 
    components: {
        'NewComment': NewComment, 'SingleComment': this
    },
    name: 'SingleComment'
}
</script>

列表组件经典列表接收项目数组作为 prop,由下式给出

<div v-for="item in items" ...
    <slot
        name="listitem"
        :item="item"
    />
</div>

这是我想将这两个组件与模式一起使用的父级 家长

<AppModal

>
...
<List
    class="my-1"
    :items="comments.docs"
>

    <template v-slot:listitem="{ item }">
        <SingleComment
            :item="item"
            :remove="removeItem"
            @remove="removeItem"
        />
    </template>
</List>

我想将这个东西连接到 Parent 中,这样我就可以对整个列表使用单一模式。 我是否可以将事情与事件联系起来?或者?欢迎任何形式的帮助。我被困住了。我可以进行一些修改,但我真的不知道如何处理这个自引用组件。


如果只有一层嵌套,您可以简单地将组件本身作为插槽传递,如下所示:

<Comment v-for="comment in comments" :key="comment.id" v-bind="comment">
  <Comment v-for="thread in comment.thread" :key="thread.id" v-bind="thread" />
</Comment>

然后你只需要担心将 props 传递到更深一层,就好像你只有一个评论列表一样。我在 CodeSandbox 上创建了一个示例:https://codesandbox.io/embed/vue-template-mq24e.


如果你想使用递归方法,你只需要传递 props 和 events 即可;没有什么神奇的解决方案可以解决这个问题。更新 CodeSandbox 示例:https://codesandbox.io/embed/vue-template-doy66.

您可以避免显式传递removeitem事件侦听器关闭removeitem映射到组件的 Vuex 存储上的操作。

我的观点是,越简单越好,并且一级嵌套不需要递归。将自己置于未来开发人员的角度,使代码易于阅读和推理;当您几周没有查看代码库时,未来的开发人员甚至可能就是您。

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

事件和自引用组件 vue.js 的相关文章

随机推荐

  • 编译并运行动态代码,而不生成EXE?

    我想知道是否可以编译并运行存储的代码 而不生成 exe 或任何类型的其他文件 基本上从内存中运行该文件 基本上 主应用程序将具有一些存储的代码 可能会更改的代码 并且需要编译代码并执行它 无需创建任何文件 创建文件 运行程序 然后删除文件不
  • 实体框架DbContext无需查询并通过外键更新值

    我有一个更新一些表的方法 对于更新我需要首先获得TestProcess 但我不喜欢这样 我怎样才能更新TestProcess没有select firstOrDefault 操作 仅用于更新操作 方法示例 public void Update
  • 如何动态地分块重塑矩阵? [复制]

    这个问题在这里已经有答案了 假设我有A 1 8 11 18 21 28 31 38 41 48 现在我想将所有内容从第 4 列向前移动到行位置 我该如何实现这一目标 A 1 2 3 4 5 6 7 8 11 12 13 14 15 16 1
  • 如何处理“变量时间”(DATE、双精度、8 字节)?

    我似乎找不到任何有关 变体时间 的信息 DATE 双精度 8 字节变量 被处理 我有一个不同的时间 A 哪个值是 41716 892329 如果我转换 A 使用 变体时间到系统时间 or COle日期时间 我明白 2014 03 18 21
  • 移动向量会使迭代器失效吗?

    如果我有一个向量迭代器a 然后我移动构造或移动分配向量b from a 该迭代器是否仍然指向同一个元素 现在在向量中 b 这就是我在代码中的意思 include
  • 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表

    我想以这种格式分割一个字符串 引用 date 10 10 2000 age 13 date 01 01 2001 age 12 date 02 02 2005 age 8 实际上这个字符串只是一个示例 我的原始字符串非常大 我不明白的是 如
  • 在 ASP.NET MVC 2 中 - 如何将路由值获取到导航控制器中,以便突出显示当前链接?

    我正在尝试将当前路线放入导航控制器中 以便在填充导航菜单数据时可以运行比较 我的链接对象是这样的 public class StreamNavLinks public string Text get set public RouteValu
  • Struts2;为 StrutsSpringTestCase JUnit 测试保持会话打开

    我的项目架构是带有 Spring 集成和 JPA Hibernate 的 Struts2 StrutsSpringTestCase 基类用于 JUnit 集成测试 正常情况下 web xml 中的以下配置使单个会话从每个请求的开始到结束保持
  • 退出应用程序会让人不悦吗?

    继续尝试学习 Android 我只是阅读以下 问题 用户是否可以选择终止应用程序 除非我们添加一个菜单选项来杀死它 如果不存在这样的选项 用户如何终止应用程序 答案 Romain Guy 用户不这样做 系统会自动处理此问题 这就是 Acti
  • OpenCV 中的人脸识别

    我试图使用 OpenCV 2 2 来自 Willow Garage 构建一个基本的人脸识别系统 PCA Eigenfaces 我从之前关于人脸识别的许多帖子中了解到 没有标准的开源库可以为您提供所有人脸识别功能 相反 我想知道是否有人使用过
  • 如何在heroku中设置超过30秒的响应超时

    伙计们 如果响应返回时间超过 30 秒 Heroku 将终止请求 那么有什么方法可以让我等待响应返回呢 好吧 用户正在上传他的文件 我需要对服务器中的文件执行一些操作 更新完成后 我将向用户提供下载链接 但服务器处理文件的时间大多超过30秒
  • Rails 5、Heroku 与 Let's Encrypt SSL - 配置设置时遇到问题

    我正在尝试弄清楚如何使用 heroku 上的 Rails 应用程序进行加密 我已经尝试了几个 gem 它们似乎是为帮助完成此过程而设计的 letsencrypt plugin 但删除了这些 gem 推荐的所有安装步骤 因为我无法正常工作 现
  • 矢量填充和调整大小

    我正在研究地图生成器 我使用二维向量来保存数据 Header class MapGenerator public protected std vector lt std vector
  • 防止以编程方式缓存脚本

    我想问一下有没有办法阻止Firefox缓存脚本 js文件 我有一个项目 ASP Net Web App 在 Firefox 上存在缓存问题 当我第一次运行应用程序 脚本正在 Firefox 上缓存 并修改脚本并重新运行应用程序时 Firef
  • 如何获取运行时x:Name值

    I got
  • 如何选择从Excel运行的.NET框架版本?

    除了将 excel exe config 文件添加到 Office Binary 文件夹之外 如何指定 Excel 在运行 NET dll 时使用 NET Framework 版本 2 0 我们的应用程序在 Excel 中运行 并使用 VB
  • mypy可以根据当前对象的类型选择方法返回类型吗?

    在下面的代码中 调用clone 在 A 的实例上调用该方法将返回 A 类型的实例 在 B 的实例上调用该方法将返回 B 类型的实例 依此类推 目的是创建一个与当前实例相同但具有不同的内部生成主键的新实例 因此可以从那里对其进行编辑并安全地另
  • ng-model 作为二维数组中的变量

    p span span p
  • 检查 int 是否为素数 Java

    对 修复我的代码 帖子感到抱歉 编辑 与语法更多相关for循环比质数 现在也解决了 我的任务是从控制台获取一个 int 并打印出 在单独的行上 从 1 到 n 含 的所有素数 我的方法从 n 开始 检查是否为素数 然后将 n 递减 1 并循
  • 事件和自引用组件 vue.js

    我有允许 1 级线程的评论系统 意味着第一级评论看起来像 内容 线 其中线程可能有更多评论 我认为这对于自引用组件和带有插槽的列表很有用 但过了一会儿我不知道如何连接这个东西 SingleComment 组件如下