吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 958|回复: 5
收起左侧

[求助] VUE3,创建和渲染dom元素的问题

[复制链接]
cqwcns 发表于 2023-1-18 11:58
需求是先获得页面上的父元素,然后向该父元素添加多个子元素。
首先我尝试这样,即先后添加:
[JavaScript] 纯文本查看 复制代码
const onEditorReady = () => {
  console.log('EditorReady');
  // 获得父元素
  const domEditorToolBar = document.getElementsByClassName('ck-toolbar__items')[0];
  // 创建子元素
  const domBtnA = h('button', { class: 'ck ck-button', onClick: doEditorFullScreen }, 'A');
  const domBtnB = h('button', { class: 'ck ck-button', onClick: doEditorFullScreen }, 'B');
  // 渲染子元素
  render(domBtnA, domEditorToolBar);
  render(domBtnB, domEditorToolBar);
}

存在问题:结果只会渲染出最后一个,即B,A未被渲染出来,不知道什么原因。

然后我尝试嵌套子元素,例如这样:
[JavaScript] 纯文本查看 复制代码
const onEditorReady = () => {
  console.log('EditorReady');
  // 获得父元素
  const domEditorToolBar = document.getElementsByClassName('ck-toolbar__items')[0];
  // 创建子元素
  const domBtnA = h('button', { class: 'ck ck-button', onClick: doEditorFullScreen }, 'A');
  const domBtnB = h('button', { class: 'ck ck-button', onClick: doEditorFullScreen }, 'B');
  // 渲染子元素
  render(h('span', {}, [domBtnA, domBtnB]), domEditorToolBar);
}


存在问题:A和B都被渲染出来了,可见实际上也是渲染了一个span(包含A和B),结构变成了:
<父元素>
   <原有子元素>
   <原有子元素>
   <span>
     <A/>
     <B/>
   </span>
</父元素>

由于加套了一个span会影响元素样式,所以我不能使用第二种方法。


请教各位大佬,这种需求应该怎么写?感谢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bilibini 发表于 2023-1-18 12:12
看一下你的render函数怎么写的
 楼主| cqwcns 发表于 2023-1-18 12:47
bilibini 发表于 2023-1-18 12:12
看一下你的render函数怎么写的

我用的是直接从vue导出的:

import { ref, h, render } from 'vue';
13604811047 发表于 2023-1-18 13:47
本帖最后由 13604811047 于 2023-1-18 13:48 编辑


import { Fragment } from "vue";   
render(h(Fragment,[domBtnA, domBtnB] ), domEditorToolBar);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 我很赞同!

查看全部评分

freesaber 发表于 2023-1-18 13:49
把<A/> <B/>,写在一个组件里面,然后用template
<template>
  <A/>
   <B/>
</template>
h(这个组件)

免费评分

参与人数 1热心值 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

ibilibili 发表于 2023-1-18 15:00
既然用了vue就不要操作dom了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表