当前位置: 首页 > news >正文

vue3项目实践心得-多次渲染同一svg + 理解v-if、transition、dom加载之间的顺序

🧡🧡需求🧡🧡

未点击查看答案按钮时,步骤3面板未展示内容(v-if控制)
在这里插入图片描述

点击查看答案按钮后,通过graphviz绘制并展示状态转换图,渲染在步骤2中,同时步骤3的v-if变为true,渲染出内容并且也渲染展示这张图
在这里插入图片描述

🧡🧡遇到的问题🧡🧡

  • 渲染重复性:前端通过vue-graphviz库 使用svg渲染 后端传来的dot_str,从而绘制出这张svg状态转换图,问题出现在项目中需要展示两个同样svg,由于它们的id相同,根据共享原则,导致只渲染了一个
  • 渲染时机:涉及v-if、transition、添加dom节点的操作,时机不对导致步骤3的svg图渲染不出来

🧡🧡解决思路🧡🧡

  • 对于渲染重复性问题:利用cloneNode函数,复制一个新的svg,从而添加dom节点
	 const svg = viz.renderSVGElement(draw_dot['NFA'][0])
	 const svgClone = svg.cloneNode(true)
	 NFAs.value[0].appendChild(svg)
	 NFAs.value[1].appendChild(svgClone)
  • 对于渲染时机:掌握vue3 transition文档中描述的enter钩子,应当确保v-if渲染后的dom生成后,再调用渲染函数(添加svg dom),之后再开始进行transiton过渡
    在这里插入图片描述
const handleStep3_TransEnter = (el:Element, done:()=>void) => {
    // console.log(NFAs.value)
    // console.log('step333333333333333333')
    
    if(!step3_open.value) return done()
    // console.log(222)
    // 此时元素已插入 DOM
    nextTick().then(() => {
      // console.log(NFAs.value)
      // 确保 ref 已收集
      if (NFAs.value.length >= 2) {
        instance().then(viz => {
          const svg = viz.renderSVGElement(draw_dot['NFA'][0])
          const svgClone = svg.cloneNode(true)
          
          NFAs.value[0].appendChild(svg)
          NFAs.value[1].appendChild(svgClone)
          draw_dot['NFA'][1] = true
        })
      }
    })
}

相关文章:

  • 面向企业的采购ERP管理系统
  • 【HF设计模式】07-适配器模式 外观模式
  • kong API Key 认证插件详解
  • java连接redis
  • Flutter 正在推进全新 PlatformView 实现 HCPP, 它又用到了 Android 上的什么黑科技
  • 微信小程序 - 网络请求基础路径集中管理(基础路径集中管理策略、动态切换基础路径)
  • 深入理解大语言模型的文本数据处理流程
  • python 并行请求多个 HTTP 接口
  • 设计模式在Qt中的应用
  • 深度集成DeepSeek大模型:WebSocket流式聊天实现
  • C#+SqlSugar实现主从库读写分离
  • 面向长范围交互式 LLM 智体的强化学习
  • 动画云渲染平台技术评估与优选策略
  • 机器学习基本篇
  • 领域驱动设计叕创新,平安保险申请DDD专利
  • Java并发编程8--线程
  • React + TypeScript+ Vite 配置路径别名和vscode智能路径提示
  • AI时代:前端开发的职业发展路径拓宽
  • vsan数据恢复—vsan缓存盘故障导致虚拟磁盘文件丢失的数据恢复案例
  • 在线考试系统(代码+数据库+LW)
  • 建立网站需要备案吗/山西百度查关键词排名
  • 设计师逛的网站/网站怎么优化关键词排名
  • 用macbook做网站开发/爱客crm
  • 哈尔滨建设局网站首页/长尾关键词爱站网
  • 十大不充钱的手游/福州seo代理商
  • 手机网站 等比缩放/网站怎么优化搜索