跳至内容

useViewer

获取当前组件或其祖先组件通过 createViewer 注入的 Viewer 实例。任何层级的组件都能直接取回同一个实例,无需层层传参;未注入时抛出明确的 Error 提示,而非静默返回 undefined

Usage

WARNING

useViewercreateViewer 同时在同一组件内使用,useViewer 需在 createViewer 之后调用,并优先使用当前组件创建的实例。

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

const elRef = ref<HTMLElement>();
createViewer(elRef);
// 必须在 `createViewer` 之后调用,否则可能取到祖先组件注入的实例
const viewer = useViewer();
vue
<script setup lang="ts">
import { useViewer } from 'vesium';

const viewer = useViewer();
</script>

返回值

  • Readonly<ShallowRef<Viewer | undefined>> - 只读的 Viewer 引用,与创建它的 createViewer 指向同一个 Viewer 实例;实例销毁后为 undefined

注意事项

  • 当前组件及所有祖先组件都没有注入时抛出 Error,提示是否调用了 createViewer
  • 返回的是只读引用,不能直接赋值。

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>>;