Skip to content

Commit 2d0aa82

Browse files
author
YONGQI
authored
feat: Ellipsis校验越界不走缓存配置 (#3329)
* feat: 不走缓存配置 * feat: 修复CIlint错误 * feat: 修复lint问题
1 parent c1dc515 commit 2d0aa82

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/packages/ellipsis/ellipsis.taro.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ import React, { FunctionComponent, useState, useRef, useEffect } from 'react'
22
import { nextTick, createSelectorQuery } from '@tarojs/taro'
33
import classNames from 'classnames'
44
import { View } from '@tarojs/components'
5-
import { getRectInMultiPlatform } from '@/utils/taro/get-rect'
5+
import {
6+
getRectInMultiPlatform,
7+
getRectInMultiPlatformWithoutCache,
8+
} from '@/utils/taro/get-rect'
69
import { ComponentDefaults } from '@/utils/typings'
710
import { useRtl } from '../configprovider/index.taro'
811
import { TaroEllipsisProps } from '@/types'
@@ -195,7 +198,7 @@ export const Ellipsis: FunctionComponent<
195198

196199
// 验证省略号
197200
const verifyEllipsis = async () => {
198-
const refe = await getRectInMultiPlatform(rootContain.current)
201+
const refe = await getRectInMultiPlatformWithoutCache(rootContain.current)
199202
if (refe && refe.height && refe.height > maxHeight.current) {
200203
if (direction === 'end') {
201204
ellipsis.current.leading = ellipsis.current?.leading?.slice(

src/utils/taro/get-rect.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,24 @@ export const getRectInMultiPlatform = async (
5353
}
5454
return Promise.resolve(makeRect(0, 0))
5555
}
56+
57+
// 获取元素位置,不走缓存
58+
export const getRectInMultiPlatformWithoutCache = async (
59+
element: any,
60+
harmonyId = ''
61+
): Promise<Rect> => {
62+
if (element) {
63+
if (inBrowser) {
64+
return Promise.resolve(getRect(element))
65+
}
66+
return new Promise((resolve, reject) => {
67+
createSelectorQuery()
68+
.select(`#${harmonyId || element.uid}`)
69+
.boundingClientRect()
70+
.exec(([rects]) => {
71+
resolve(rects)
72+
})
73+
})
74+
}
75+
return Promise.resolve(makeRect(0, 0))
76+
}

0 commit comments

Comments
 (0)