Skip to content

useViewer

Retrieve the Viewer instance injected by createViewer in the current component or its ancestors. Any component at any level can get the same instance directly with no prop drilling; if nothing is injected, it throws a clear Error instead of silently returning undefined.

Usage

WARNING

If useViewer and createViewer are used in the same component, useViewer must be called after createViewer and will prioritize the instance created by the current component.

ts
import { createViewer, useViewer } from 'vesium';
import { ref } from 'vue';

const elRef = ref<HTMLElement>();
createViewer(elRef);
// Must be called after `createViewer`, otherwise an ancestor-injected instance may be returned
const viewer = useViewer();
vue
<script setup lang="ts">
import { useViewer } from 'vesium';

const viewer = useViewer();
</script>

Return Value

  • Readonly<ShallowRef<Viewer | undefined>> - a readonly reference to the Viewer, pointing to the same Viewer instance created by createViewer; undefined once the instance is destroyed.

Notes

  • If neither the current component nor any ancestor has called createViewer, an Error is thrown asking whether createViewer has been called.
  • The returned reference is readonly and cannot be assigned to directly.

Type Definitions

typescript
import type { Viewer } from 'cesium';
import type { ShallowRef } from 'vue';
/**
 * Obtain the `Viewer` instance injected through `createViewer` in the current component or its ancestor components.
 *
 * note:
 * - If `createViewer` and `useViewer` are called in the same component, the `Viewer` instance injected by `createViewer` will be used preferentially.
 * - When calling `createViewer` and `useViewer` in the same component, `createViewer` should be called before `useViewer`.
 */
export declare function useViewer(): Readonly<ShallowRef<Viewer | undefined>>;