正如错误消息所示,`container.value` 可能为 `null`。这是因为 `ref(null)` 最初将值设置为 `null`。为了避免此错误,您可以使用可选链操作符 `?.` 来访问 `value` 属性,但前提是 `container` 不为 `null`:

<template>
  <div ref="container"></div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';
import * as THREE from 'three';

const container = ref<HTMLDivElement | null>(null);
let scene: THREE.Scene | null = null;
let camera: THREE.PerspectiveCamera | null = null;
let renderer: THREE.WebGLRenderer | null = null;

const setScene = () => {
  scene = new THREE.Scene();
  scene.background = new THREE.Color(0x001219);
};

const setCamera = () => {
  camera = new THREE.PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    5000
  );
  camera.position.set(0, 0, 8);
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  scene.add(camera);
};

const setRenderer = () => {
  renderer = new THREE.WebGLRenderer({
    antialias: true,
  });
  renderer.setSize(window.innerWidth, window.innerHeight);
  container.value?.appendChild(renderer.domElement);
};

const init = () => {
  setScene();
  setCamera();
  setRenderer();
};

onMounted(init);
</script>
Vue.js Three.js 错误:'container.value' 可能为 'null' 的解决方案

原文地址: https://www.cveoy.top/t/topic/mQcE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录