2024-11-05:cesium的hook

Posted on:November 5, 2024 at 09:22 AM
预计阅读时长:4 min read 字数:742

目录

探索

cesium template优化

只是使用了一个useReducer,但好像没有必要

  • use hooks
/src/components/react/cesium/hooks/useCesium.ts
import { useEffect, useRef } from "react";
import { Viewer, Ion } from "cesium";

// 自定义 Hook,用于初始化 Cesium 和管理生命周期
export const useCesium = () => {
  const cesiumContainerRef = useRef(null); // DOM 容器引用
  const viewerRef = useRef(null); // 使用 useRef 保存 Cesium Viewer 实例

  // 设置 Cesium 的默认访问令牌
  Ion.defaultAccessToken =
    "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwOWRkMzFlYS0yMDVhLTRkNzYtYWJmMC1hMmE1NjljN2MyNjMiLCJpZCI6NzMzNDQsImlhdCI6MTYzNjgxNDEzNX0.Q2MfD_lkQgsJ-R3NPfYjS9QA9q_j4Py8DktYKsPmZNg";

  useEffect(() => {
    if (cesiumContainerRef.current && !viewerRef.current) {
      // 初始化 Cesium Viewer
      const cesiumViewer = new Viewer(cesiumContainerRef.current, {
        terrainProvider: undefined,
        baseLayerPicker: false,
        geocoder: false,
        homeButton: false,
        sceneModePicker: false,
        navigationHelpButton: false,
        animation: false,
        timeline: false,
        fullscreenButton: false,
      });

      // 移除 Cesium 的版权信息
      //@ts-ignore
      cesiumViewer._cesiumWidget._creditContainer.style.display = "none";

      // 使 canvas 元素在点击时获得焦点
      cesiumViewer.canvas.onclick = () => cesiumViewer.canvas.focus();

      // 停止滚轮事件的传播
      const handleWheel = event => event.stopPropagation();
      cesiumContainerRef.current.addEventListener("wheel", handleWheel);

      // 保存 viewer 实例
      viewerRef.current = cesiumViewer;

      // 清理:在组件卸载时销毁 Viewer 实例
      return () => {
        if (cesiumViewer && !cesiumViewer.isDestroyed()) {
          cesiumViewer.destroy();
        }
      };
    }
  }, []); // 依赖项为空数组,确保只初始化一次

  return { cesiumContainerRef, viewer: viewerRef.current };
};

类型体操

题目描述

interface Cat {
  type: "cat";
  breeds: "Abyssinian" | "Shorthair" | "Curl" | "Bengal";
}

interface Dog {
  type: "dog";
  breeds: "Hound" | "Brittany" | "Bulldog" | "Boxer";
  color: "brown" | "white" | "black";
}

type MyDogType = LookUp<Cat | Dog, "dog">; // expected to be `Dog`

答案

type LookUp<U, T> = U extends { type: T } ? U : never;

金融

净资产收益率(Return on Equity, ROE)是衡量企业盈利能力的重要指标之一,用来衡量公司利用股东权益(即净资产)产生利润的能力。ROE 表示每一单位的股东权益可以带来多少利润,其计算公式如下:

ROE=净利润平均净资产×100%\text{ROE} = \frac{\text{净利润}}{\text{平均净资产}} \times 100\%

其中:

  • 净利润:企业在一定期间内的税后利润。
  • 平均净资产:通常为期初和期末净资产的平均值,计算公式为 (期初净资产+期末净资产)/2(\text{期初净资产} + \text{期末净资产}) / 2

ROE 的作用

ROE 反映了企业自有资本的收益能力,是投资者评估公司盈利能力、财务效率的重要依据。高 ROE 表明公司用较少的资本产生了更多的利润,通常被视为经营效率高的表现。

ROE 的意义和局限性

  1. 意义:高 ROE 通常意味着公司有较强的盈利能力和资本使用效率。
  2. 局限性:高 ROE 可能因为高负债率,因而并非所有高 ROE 的企业都是财务状况健康的。ROE 需要与其他财务指标结合使用,全面评估公司的财务健康状况。

提高 ROE 的方法

  • 提升销售利润率:增加营业收入和净利润。
  • 提高资产周转率:增加净资产的周转效率。
  • 合理控制财务杠杆:在适度的风险下,通过借款等手段放大权益资本的回报率。