首页 > 其他分享 >vue3同一页面内重复引用同一操作dom的组件产生的问题

vue3同一页面内重复引用同一操作dom的组件产生的问题

时间:2023-08-28 12:56:15浏览次数:42  
标签:同一 dom tbody vue3 组件 页面

[2023年8月28日12:39:40]

vue3同一页面内标签<component>重复引用同一组件,且该组件内使用css选择器进行dom操作导致页面内相同组件发生变化的问题解决记录

组件内进行dom操作,需要通过js方法进行选择器的元素获取,但当vue3全部渲染完毕后,页面内有多个id为test9的相同元素,元素选择将变得模糊,如下:

document.querySelectorAll('#test9 table tbody')[0]

解决办法是把上面的js方式改成ref进行引用,并在异步加载该组件时进行markRaw,标记组件为非响应式,提高渲染性能

// 组件内
<template>
  ......
  <tbody ref="tbody">
    ...
  </tbody>
</template>

<script>
  // 用 tbody.value去做dom操作
  const tbody = ref<any>(null)
</script>
// 多次引用该组件的父级页面
<template>
  ......
  // v-for循环 item
  <component
    :is="item.component"
    class="grow"
  />
</template>

<script>
  function getComponent(name: string): Component {
  return markRaw(defineAsyncComponent('..需要多次渲染的组件路径'))
}
</script>

标签:同一,dom,tbody,vue3,组件,页面
From: https://www.cnblogs.com/lastkiss/p/17662009.html

相关文章

  • 论文解读(DEAL)《DEAL: An Unsupervised Domain Adaptive Framework for Graph-level Cl
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:DEAL:AnUnsupervisedDomainAdaptiveFrameworkforGraph-levelClassification论文作者:NanYin、LiShen、BaopuLi、MengzhuWang、论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1......
  • vue3中使用provide/inject
    父组件<template><hello-world/><button@click="changeMessage">按钮</button></template><scriptsetuplang="ts">importHelloWorldfrom"./components/HelloWorld.vue";import{provide,ref......
  • 论文解读(PERL)《PERL: Pivot-based Domain Adaptation for Pre-trained Deep Contextua
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:PERL:Pivot-basedDomainAdaptationforPre-trainedDeepContextualizedEmbeddingModels论文作者:EyalBen-David、CarmelRabinovitz、RoiReichart论文来源:2020TACL论文地址:download 论文代码:download视屏......
  • vue3探索——组件通信之v-model父子组件数据同步
    背景再很多场景中,我们可能想在子组件中修改父组件的数据,但事实上,vue不推荐我们这么做,因为数据的修改不容易溯源。Vue2写法在vue2中,我们使用.sync修饰符+自定义事件'update:xxx',来使父子组件数据同步。//父组件<template><div><h2>我是父组件,我有{{money}}¥......
  • 论文解读(TAMEPT)《A Two-Stage Framework with Self-Supervised Distillation For Cros
     论文信息论文标题:ATwo-StageFrameworkwithSelf-SupervisedDistillationForCross-DomainTextClassification论文作者:YunlongFeng,BohanLi,LiboQin,XiaoXu,WanxiangChe论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1介绍 动......
  • random用法
    random模块是Python标准库中提供的一个随机数生成模块,它提供了许多生成随机数的函数和方法。以下是random模块的一些常用方法及其详细参数说明: 1.random.random():返回一个[0,1)之间的随机浮点数。2.random.uniform(a,b):返回一个[a,b]之间的随机浮点数。3.random.randin......
  • Vue3.3 + TS4 ,自主打造媲美 ElementPlus的组件库(16章)
    点击下载:Vue3.3+TS4,自主打造媲美ElementPlus的组件库(16章)提取码:n899 Vue3.3+TS4,自主打造媲美ElementPlus的组件库课程,又名:进阶必学,2023最新,打造媲美ElementPlus的组件库随着Web应用程序的复杂性不断增加,为了提高开发效率和维护性,我们往往需要构建可复用的组件库。Vue作为......
  • vue3中组件,api的自动导入
    vue3中ref,reactive等api和自定义组件等每个页面都要引入很麻烦,偷懒是人的天性,故引入自动导入插件,以此记录:1.vue3的api自动导入使用前:<scriptsetuplang="ts">import{ref,onMounted}from'vue'constimgUrl=ref("")constcanvas=ref()onMounted(()=>......
  • 在Vue3中使用 Pinia 保姆教程
    前言Vue3是Vue3是一款非常流行的JavaScript框架,它的出现为我们开发Web应用程序提供了更加高效和便捷的方式。在Vue3中,我们可以使用Pinia来进行状态管理,这是一个非常流行的状态管理库,它可以帮助我们更好地组织和管理应用程序的状态。在本文中,我们将探讨如何使用Vue3和Pinia,并持久化......
  • vue3 监听容器滚动到底部
    在容器里面添加@scroll事件<template><div@scroll="scrolling"id="content"><pv-for="iinArray.from({length:30},(v,i)=>i)">{{i}}</p></div><divv-if="bottom"......