vue使用slot时子组件的onUpdated执行问题

news2025/3/11 11:29:25

vue使用slot时子组件的onUpdated执行问题

在使用 Vue 的插槽 (slot) 功能时,可能会遇到一个问题:当父组件的任何状态更新时,子组件的 onUpdated 事件会被触发。这个问题在使用默认插槽时尤为明显。
为了避免这种情况,可以使用作用域插槽

示例代码

以下是一个示例,展示了如何使用默认插槽和作用域插槽。

父组件 (slot.vue)
<template>
    <div class="about">
        <h1>{{ msg }}</h1>
        <SlotChild class="parentClass">
        this is slot content; 
    <!-- 注释下一行就不会触发onupdated -->
        <slot></slot>
        <!-- 作用域插槽 可以访问子组件的状态 -->
        <template #s2="scope">
            hello slot1 
            {{ scope.text }}
        </template>
        </SlotChild>
    </div>
</template>

<script setup>
import SlotChild from './SlotChild.vue'
import { ref, onUpdated } from 'vue'

const msg = ref('this is messages')

onUpdated(() => {
    console.log('updated parent')
})

setTimeout(() => {
    msg.value = 'changed msg'
}, 1000)
</script>
子组件 (SlotChild.vue)
<template>
    <div class="about">
        <h1>SlotChild</h1>
        <slot name="default">
            this is default content
        </slot>
        <!-- 具名插槽,在一个组件里有多个插槽出口 -->
        <p>
            <slot name="s1" :text='text1'></slot><br>
            <slot name="s2" :text='text2'></slot><br>
        </p>
    </div>
</template>

<script setup>
import { ref, onUpdated } from 'vue'

const text = ref('this is default text')
const text1 = ref('this is scoped text1')

onUpdated(() => {
    console.log('updated child')
})
</script>

图片示例

在这里插入图片描述

示例代码

github-vue3-learn

解释

在上面的示例中,父组件 slot.vue 使用了默认插槽和作用域插槽。默认插槽会导致子组件在父组件状态更新时触发 onUpdated 事件。而作用域插槽则不会有这个问题,因为它们只会在相关的插槽内容发生变化时才会更新。

根据 Vue 官方文档的解释,作用域插槽允许我们将数据从子组件传递到父组件,从而避免不必要的更新。

通过使用作用域插槽,可以更好地控制组件的更新行为,避免不必要的性能开销。

参考资料

  • Vue.js 官方文档 - 插槽
  • Vue.js 官方文档 - 作用域插槽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零到多页复用:我的WPF MVVM国际化实践

文章目录 第一步&#xff1a;基础实现&#xff0c;资源文件入门第二步&#xff1a;依赖属性&#xff0c;提升WPF体验第三步&#xff1a;多页面复用&#xff0c;减少重复代码第四步&#xff1a;动态化&#xff0c;应对更多字符串总结与反思 作为一名WPF开发者&#xff0c;我最近…

LeetCode 解题思路 12(Hot 100)

解题思路&#xff1a; 定义三个指针&#xff1a; prev&#xff08;前驱节点&#xff09;、current&#xff08;当前节点&#xff09;、nextNode&#xff08;临时保存下一个节点&#xff09;遍历链表&#xff1a; 每次将 current.next 指向 prev&#xff0c;移动指针直到 curre…

HTML-05NPM使用踩坑

2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷&#xff0c;然后一番折腾之后&#xff0c;终究还是没有解决npm的问题&#x1f61e;&#x1f61e;&#x1f61e;,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…

学校地摊尝试实验

学校地摊尝试实验 诸位&#xff0c;我要告诉诸位一件大消息&#xff0c;那就是&#xff0c;我将会利用学校时光的最后一段时间进行疯狂摆摊练习&#xff0c;如何进行摆摊&#xff0c;大家 听我娓娓道来。我要确定摆摊的目的&#xff0c; 第一&#xff0c;赚钱&#xff0c;第二…

MHA集群

一.MHA集群 MHA master high avavibility 主服务器高可用 如上图所示&#xff0c;我们之前说过&#xff0c;如果在主从复制架构中主服务器出现故障&#xff0c;就需要我们将从服务器作为主服务器&#xff0c;等故障的主服务器修复好之后&#xff0c;再将修好的主服务器作为从服…

Bazel搭建CUDA工程入门

环境版本&#xff1a; 工程目录&#xff1a; 测试输出&#xff1a; WORKSPACE 参考仓库&#xff1a;CUDA rules for Bazel 及 examples load("bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")http_archive(name "rules_cuda…

QILSTE灯珠:尺寸光电全解析

QILSTE灯珠&#xff1a;尺寸光电全解析 &#x1f31f; 型号H4-115BGRYA/5M&#xff0c;由QILSTE&#xff08;HongKong&#xff09;Technology Co., Ltd精心打造&#xff0c;以其1.6x1.5x0.4mm的紧凑外观尺寸&#xff0c;展现高亮红光、翠绿、蓝的缤纷色彩。 &#x1f4cf; 尺寸…

golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介

还记得2018年的夏天,刚毕业的我不知道该做些什么,于是自学了一周的go语言,想要找一份go语言工作的代码,当时的go还没有go mod来管理依赖包,在北京找了一个月的工作,找到了一个小公司做了后端开发,当然使用go语言开发,带着兴奋劲,年轻身体也好,边努力学习,边工作。 时…

用IdleHandler来性能优化及原理源码分析

背景&#xff1a; 经常在做一些app冷启动速度优化等性能优化工作时候&#xff0c;经常可能会发现有时候需要引入一些第三方sdk&#xff0c;或者库&#xff0c;这些库一般会要求我们在onCreate中进行初始化等&#xff0c;但是onCreate属于生命周期的回调方法&#xff0c;如果on…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …

Swagger-01.介绍和使用方式

一.Swagger介绍 有了接口文档&#xff0c;我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能&#xff0c;后端如何验证我们开发的是否正确呢&#xff1f;我们就需要测试&#xff0c;使用Swagger就可以帮助后端生成接口文档&#xff0c;并且可以进行后端的接…

Unity 使用NGUI制作无限滑动列表

原理&#xff1a; 复用几个子物体&#xff0c;通过子物体的循环移动实现&#xff0c;如下图 在第一个子物体滑动到超出一定数值时&#xff0c;使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复&#xff0c;向下滑动也是这…

【并发编程】聊聊定时任务ScheduledThreadPool的实现原理和源码解析

ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池&#xff0c;主要有四种方式&#xff0c;具体可以看代码&#xff0c; 这里主要描述下 scheduleAtFixedRate &#xff1a; 除了第一次执行的时间&#xff0c;后面任务执行的时间 为 time MAX(任务执行时…

Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

Java-servlet&#xff08;三&#xff09;Java-servlet-Web环境搭建&#xff08;下&#xff09;利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…

如何选择DevOps平台?GitHub、GitLab、BitBucket、Jenkins对比与常见问题解答

本文内容来源github.com&#xff0c;由GitHub中国授权合作伙伴-创实信息进行翻译整理。 欢迎通过021-61210910、customershcsinfo.com联系我们&#xff0c;免费试用GitHub企业版。 软件是当今领先企业的核心&#xff0c;而开发者则是软件的核心。GitHub作为一个完整的开发者平台…

react中的fiber和初次渲染

源码中定义了不同类型节点的枚举值 组件类型 文本节点HTML标签节点函数组件类组件等等 src/react/packages/react-reconciler/src/ReactWorkTags.js export const FunctionComponent 0; export const ClassComponent 1; export const IndeterminateComponent 2; // Befo…

闭包+求解候选码+最小函数依赖集

一、闭包 直接上例题 简单明了 A的闭包ABC ABC的闭包ABCD ABCD的闭包ABCDE ABCDE的闭包ABCDEG 等于集合R的全集 所以A的闭包为ABCDEG AB的闭包为ABC 二、候选码 答案&#xff1a; 三、最小函数依赖集 求F的最小函数依赖集 去掉多余的 然后&#xff01; 化为最简

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示,带插图的空状态,Table7空状态2

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的&#xff1a; 通过一个俯视整个场地的正交摄像机&#xff0c;根据绑定在移动物体身上的粒子系统&#xff0c;来获取物体移动过的位置&#xff0c;记录到一张RenderTexture上作为轨迹图&#xff0c;再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…

嵌入式开发之串行数据处理

前题 前面几篇文章写了关于嵌入式软件开发时&#xff0c;关于串行数据处理的一些相关内容&#xff0c;有兴趣的可以看看《嵌入式开发&#xff1a;软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…