From 7f1184836d4a043db79d64a5ea1724d39cdd6d5f Mon Sep 17 00:00:00 2001 From: zhujiruo Date: Sun, 27 Apr 2025 16:13:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(utils):=20=E5=AF=B9=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=20getSystemInfoSync=20API=E7=9A=84?= =?UTF-8?q?=E5=BA=9F=E5=BC=83=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 getWindowInfo 方法,用于获取窗口信息 - 更新 SDKversion 和 version 的获取方式 - 更新相关组件中获取窗口信息的方式,使用新的 getWindowInfo 方法 --- packages/vantui/src/common/utils.ts | 8 ++++++++ packages/vantui/src/common/version.ts | 13 ++++--------- packages/vantui/src/dropdown-item/index.tsx | 4 ++-- packages/vantui/src/image-cropper/index.tsx | 4 ++-- packages/vantui/src/mini-nav-bar/index.tsx | 7 ++----- packages/vantui/src/nav-bar/index.tsx | 4 ++-- packages/vantui/src/notify/notify.tsx | 4 ++-- packages/vantui/src/water-mark/utils.ts | 5 +++-- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/vantui/src/common/utils.ts b/packages/vantui/src/common/utils.ts index e877812da..71933b14f 100644 --- a/packages/vantui/src/common/utils.ts +++ b/packages/vantui/src/common/utils.ts @@ -1,5 +1,6 @@ import Taro, { getSystemInfoSync as TaroGetSystemInfoSync, + getWindowInfo as TaroGetWindowInfo, createSelectorQuery, } from '@tarojs/taro' import * as raf from 'raf' @@ -25,6 +26,13 @@ export function getSystemInfoSync() { return systemInfo } +let windowInfo: any +export function getWindowInfo() { + windowInfo = + process.env.TARO_ENV === 'weapp' ? TaroGetWindowInfo() : getSystemInfoSync() + return windowInfo +} + let menuInfo: any export function getMenuButtonBoundingClientRect() { if (menuInfo == null) { diff --git a/packages/vantui/src/common/version.ts b/packages/vantui/src/common/version.ts index 01b01bb5c..a32911d6f 100644 --- a/packages/vantui/src/common/version.ts +++ b/packages/vantui/src/common/version.ts @@ -1,7 +1,8 @@ import Taro, { - getSystemInfoSync as TaroGetSystemInfoSync, canIUse, + getAppBaseInfo as TaroGetAppBaseInfo, } from '@tarojs/taro' +import { getSystemInfoSync } from './utils' function compareVersion(v1: any, v2: any) { v1 = v1.split('.') v2 = v2.split('.') @@ -24,15 +25,9 @@ function compareVersion(v1: any, v2: any) { } return 0 } -let systemInfo: any -function getSystemInfoSync() { - if (systemInfo == null) { - systemInfo = TaroGetSystemInfoSync() - } - return systemInfo -} function gte(version: any) { - const system = getSystemInfoSync() + const system = + process.env.TARO_ENV === 'weapp' ? TaroGetAppBaseInfo : getSystemInfoSync() return compareVersion(system.SDKVersion || system.version, version) >= 0 } export function canIUseModel() { diff --git a/packages/vantui/src/dropdown-item/index.tsx b/packages/vantui/src/dropdown-item/index.tsx index f67e0a3ca..78f9e2cd2 100644 --- a/packages/vantui/src/dropdown-item/index.tsx +++ b/packages/vantui/src/dropdown-item/index.tsx @@ -8,7 +8,7 @@ import { memo, } from 'react' import { nextTick, usePageScroll } from '@tarojs/taro' -import { getSystemInfoSync, requestAnimationFrame } from '../common/utils' +import { getWindowInfo, requestAnimationFrame } from '../common/utils' import { DropdownItemProps, IDropdownItemInstance, @@ -86,7 +86,7 @@ function Index( } if (parentInstance.direction === 'down') { - const winHeight = getSystemInfoSync().windowHeight + const winHeight = getWindowInfo().windowHeight const bottom = winHeight - rect.top wrapperStyle.bottom = -rect.height + 'PX' wrapperStyle.height = bottom + 'PX' diff --git a/packages/vantui/src/image-cropper/index.tsx b/packages/vantui/src/image-cropper/index.tsx index d1afb597a..073faf281 100644 --- a/packages/vantui/src/image-cropper/index.tsx +++ b/packages/vantui/src/image-cropper/index.tsx @@ -1,7 +1,7 @@ import { Canvas, Image, View } from '@tarojs/components' import { useEffect, useMemo, useRef, useState } from 'react' import { - getSystemInfoSync, + getWindowInfo, showLoading, hideLoading, getImageInfo, @@ -22,7 +22,7 @@ const pageRects = { windowHeight: 0, pixelRatio: 1, } -const res = getSystemInfoSync() +const res = getWindowInfo() const { windowWidth, windowHeight, pixelRatio } = res pageRects.windowWidth = windowWidth pageRects.windowHeight = windowHeight diff --git a/packages/vantui/src/mini-nav-bar/index.tsx b/packages/vantui/src/mini-nav-bar/index.tsx index ed693500c..6e36a774e 100644 --- a/packages/vantui/src/mini-nav-bar/index.tsx +++ b/packages/vantui/src/mini-nav-bar/index.tsx @@ -3,10 +3,7 @@ import { useState, useEffect, useCallback, useMemo } from 'react' import { View } from '@tarojs/components' import * as utils from '../wxs/utils' import { Icon } from '../icon' -import { - getSystemInfoSync, - getMenuButtonBoundingClientRect, -} from '../common/utils' +import { getWindowInfo, getMenuButtonBoundingClientRect } from '../common/utils' import { MiniNavBarProps } from '../../types/mini-nav-bar' import * as computed from './wxs' @@ -66,7 +63,7 @@ export function MiniNavBar(props: MiniNavBarProps) { }, [homeUrl]) useEffect(() => { - const sysInfo = getSystemInfoSync() + const sysInfo = getWindowInfo() const menuInfo = getMenuButtonBoundingClientRect() if (sysInfo && menuInfo) { setState({ diff --git a/packages/vantui/src/nav-bar/index.tsx b/packages/vantui/src/nav-bar/index.tsx index 884649688..a3d4d3a1f 100644 --- a/packages/vantui/src/nav-bar/index.tsx +++ b/packages/vantui/src/nav-bar/index.tsx @@ -1,7 +1,7 @@ import { useMemo, useState } from 'react' import { View } from '@tarojs/components' import * as utils from '../wxs/utils' -import { getSystemInfoSync } from '../common/utils' +import { getWindowInfo } from '../common/utils' import { NavBarProps } from '../../types/nav-bar' import { Icon } from '../icon' import { get } from '../default-props' @@ -33,7 +33,7 @@ export function NavBar(props: NavBarProps) { } const statusBarHeight = useMemo(() => { - const { statusBarHeight: _statusBarHeight } = getSystemInfoSync() + const { statusBarHeight: _statusBarHeight } = getWindowInfo() if (isNaN(_statusBarHeight)) { return 22 } diff --git a/packages/vantui/src/notify/notify.tsx b/packages/vantui/src/notify/notify.tsx index 27a32b520..5d2fd68a5 100644 --- a/packages/vantui/src/notify/notify.tsx +++ b/packages/vantui/src/notify/notify.tsx @@ -4,7 +4,7 @@ import { nextTick } from '@tarojs/taro' import * as utils from '../wxs/utils' import { NotifyProps } from '../../types/notify' import VanTransition from '../transition/index' -import { getSystemInfoSync } from '../common/utils' +import { getWindowInfo } from '../common/utils' import { get } from '../default-props' import * as computed from './wxs' @@ -68,7 +68,7 @@ export function Notify(props: NotifyProps) { useEffect(() => { nextTick(() => { - const { statusBarHeight } = getSystemInfoSync() + const { statusBarHeight } = getWindowInfo() setState((state) => { return { ...state, diff --git a/packages/vantui/src/water-mark/utils.ts b/packages/vantui/src/water-mark/utils.ts index 78fe1c7c9..4bbd67918 100644 --- a/packages/vantui/src/water-mark/utils.ts +++ b/packages/vantui/src/water-mark/utils.ts @@ -1,4 +1,5 @@ -import { createSelectorQuery, getSystemInfo } from '@tarojs/taro' +import { createSelectorQuery } from '@tarojs/taro' +import { getWindowInfo } from '../common/utils' export function getCanvas(compIndex) { return new Promise((resolve) => { @@ -35,7 +36,7 @@ export function getWaterData({ }): Promise { return new Promise(async (resolve) => { const ctx = canvas.getContext('2d') - const ratio = (await getSystemInfo()).pixelRatio + const ratio = getWindowInfo().pixelRatio const canvasWidth = `${(gapX + width) * ratio}px` const canvasHeight = `${(gapY + height) * ratio}px`