当前位置:   article > 正文

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

uni-app vue3获取dom

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

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

template中:

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

ts中:

  1. const onEditorReady = () => {
  2. // 富文本节点渲染完成
  3. var htmls = props.value
  4. if (htmls) {
  5. let contents = JSON.stringify(htmls)
  6. console.log(contents)
  7. nextTick(() => {
  8. uni.createSelectorQuery().select("#editor").context((res: any) => {
  9. console.log('res', res);
  10. editorCtx.value = res.context;
  11. editorCtx.value?.setContents({
  12. html: htmls,
  13. delta: contents
  14. })
  15. }).exec();
  16. })
  17. }
  18. }

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

​​​

解决方法:

vue3中需要修改写法

  1. import { ref, getCurrentInstance, nextTick } from 'vue';
  2. const instance = getCurrentInstance();
  3. const onEditorReady = () => {
  4. // 富文本节点渲染完成
  5. var htmls = props.value
  6. if (htmls) {
  7. let contents = JSON.stringify(htmls)
  8. console.log(contents)
  9. const query = uni.createSelectorQuery().in(instance);
  10. query.select("#editor").context((res: any) => {
  11. console.log('editorRef.value', res);
  12. editorCtx.value = res.context;
  13. console.log('editorCtx.value', editorCtx.value);
  14. editorCtx.value?.setContents({
  15. html: htmls,
  16. delta: contents
  17. })
  18. }).exec();
  19. }
  20. }

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

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

如有错误请及时指正!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/453855
推荐阅读