uni-app项目Vue3+Vite+TS开发wx小程序获取editor元素时报错,dom获取不到,已解决!

在用vscode+uni-app开发小程序时遇到了个使用原生edit富文本编辑器报错的问题,按照官方的文档去写一直报错,官网用的vue2的写法,这里我用的vue3

先看报错写法以及报错内容

template中:

   <editor id="editor" ref="editorRef" class="ql-container"
            :placeholder="placeholder" @statuschange="onStatusChange" 
            :show-img-resize="true" @ready="onEditorReady" @input="getCtx">
   </editor>

ts中:

const onEditorReady = () => {
    // 富文本节点渲染完成
    var htmls = props.value
    if (htmls) {
        let contents = JSON.stringify(htmls)
        console.log(contents)
        nextTick(() => {
            uni.createSelectorQuery().select("#editor").context((res: any) => {
                console.log('res', res);
                editorCtx.value = res.context;
                editorCtx.value?.setContents({
                    html: htmls,
                    delta: contents
                })
            }).exec();
        })
    }
}

报错:res输出为null,没有获取到dom元素,并且富文本中无法渲染内容

​​​

解决方法:

vue3中需要修改写法

import { ref, getCurrentInstance, nextTick } from 'vue';

const instance = getCurrentInstance();

const onEditorReady = () => {
    // 富文本节点渲染完成
    var htmls = props.value
    if (htmls) {
        let contents = JSON.stringify(htmls)
        console.log(contents)
        const query = uni.createSelectorQuery().in(instance);
        query.select("#editor").context((res: any) => {
            console.log('editorRef.value', res);

            editorCtx.value = res.context;
            console.log('editorCtx.value', editorCtx.value);

            editorCtx.value?.setContents({
                html: htmls,
                delta: contents
            })
        }).exec();
    }
}

重新编译:正常打印,并且富文本中正常渲染出内容

亲测uni-app和小程序中都显示正常!

如有错误请及时指正!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值