From 15e7349324743afeef4200c4c76876374e5bc049 Mon Sep 17 00:00:00 2001 From: oasis-cloud Date: Tue, 18 Jun 2024 16:37:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20react=20native=20?= =?UTF-8?q?=E4=B8=8B=E8=8E=B7=E5=8F=96=E5=85=83=E7=B4=A0=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/get-rect-by-taro.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/utils/get-rect-by-taro.ts b/src/utils/get-rect-by-taro.ts index cf3abd59df..6298d0aed4 100644 --- a/src/utils/get-rect-by-taro.ts +++ b/src/utils/get-rect-by-taro.ts @@ -1,5 +1,6 @@ import { createSelectorQuery } from '@tarojs/taro' import { getRect, inBrowser } from './use-client-rect' +import { rn } from './platform-taro' export interface Rect { dataset: Record @@ -28,6 +29,25 @@ export const getRectByTaro = async (element: any): Promise => { if (inBrowser) { return Promise.resolve(getRect(element)) } + if (rn()) { + return new Promise((resolve) => { + element.measure( + ( + xPos: number, + yPos: number, + measureWidth: number, + measureHeight: number, + pageX: number, + pageY: number + ) => { + const rect = makeRect(measureWidth, measureHeight) + rect.left = pageX + rect.top = pageY + resolve(rect) + } + ) + }) + } // 小程序下的逻辑 return new Promise((resolve, reject) => { createSelectorQuery()