ソースを参照

feature: made isReady dependency clearer by leveraging triggerRef

Tino Koch 3 週間 前
コミット
a1060f73a1
1 ファイル変更5 行追加5 行削除
  1. 5 5
      src/composables/useRenderer/useRendererManager.ts

+ 5 - 5
src/composables/useRenderer/useRendererManager.ts

@@ -11,7 +11,7 @@ import {
   useDevicePixelRatio,
 } from '@vueuse/core'
 import { ACESFilmicToneMapping, Color, WebGLRenderer } from 'three'
-import { computed, type MaybeRef, onUnmounted, readonly, ref, shallowRef, toValue, watch, watchEffect } from 'vue'
+import { computed, type MaybeRef, onUnmounted, readonly, ref, shallowRef, toValue, triggerRef, watch, watchEffect } from 'vue'
 
 // Solution taken from Thretle that actually support different versions https://github.com/threlte/threlte/blob/5fa541179460f0dadc7dc17ae5e6854d1689379e/packages/core/src/lib/lib/useRenderer.ts
 import { revision } from '../../core/revision'
@@ -196,15 +196,15 @@ export function useRendererManager(
     invalidateOnDemand()
   })
 
-  const isReady = ref(false)
+  const isReady = computed(() =>
+    !!(instance.value.domElement.width && instance.value.domElement.height),
+  )
 
   watch([sizes.width, sizes.height], () => {
     instance.value.setSize(sizes.width.value, sizes.height.value)
     invalidateOnDemand()
 
-    if (!isReady.value && sizes.width.value && sizes.height.value) {
-      isReady.value = true
-    }
+    triggerRef(instance)
   }, {
     immediate: true,
   })