Vue 3 Composition API - 潜在的空对象
P粉821808309
P粉821808309 2023-11-08 13:04:14
[Vue.js讨论组]

我使用 Vue 3 Composition apiTypescript 来使用 HammerJS 包实现捏合缩放。

我正在尝试遵循 CodePen 用 JavaScript 编写的工作示例:https://codepen.io/bakho/details/GBzvbB 在 Vue 中实现。

但是,当我尝试使其在我的 Vue 应用程序中运行时遇到了一些问题,我不确定如何解决它。

以下错误:

// Object is possibly 'null'.
imageContainer.value.offsetWidth;

// Object is possibly 'null'.
imageContainer.value.appendChild(displayImage);

// Object is possibly 'null'.
imageContainer.value.addEventList ener...

这是完整的源代码:





任何人都可以告诉我出了什么问题以及为什么会导致此 Object 可能为“null”

P粉821808309
P粉821808309

全部回复(1)
P粉752826008

这就是该错误的原因:

  • const imageContainer = ref(null) -> 您将值设置为 null 并且 TypeScript 警告您对该对象的属性的任何访问都可能引发错误,因为初始值为 null 并且因为您尝试在模板中使用 ref 该元素可以存在,也可以不必存在。

  • const imageContainer = document.querySelector('.imageContainer') -> 您正在查询存在或不存在的 HTML 元素,这意味着您还可以获取 null 作为值,并且 TypeScript 再次警告您对该对象的属性的任何访问都可能引发错误

解决方案:

  • 您必须实际从 setup 函数返回 setup 变量,以便 Vue 将其与模板中的 ref 绑定,并且可以在 onMounted 函数内部访问该变量,因为它是 ref ,这意味着它尚未安装到 DOM 中。 setup 在 Vue.js 组件生命周期中的 createdmounted 挂钩之前调用,并且您无权访问其中的任何 DOM 内容。
import { ref, onMounted } from 'vue'

export default {
  setup() {
    const imageContainer = ref(null)

    onMounted(() => {
      // here you access imageContainer variable
    })

    return {
      imageContainer 
    }
  }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号