Просмотр исходного кода

fix: 大屏在diff阶段重新渲染问题

xyh 2 лет назад
Родитель
Сommit
52ea89ca7b
1 измененных файлов с 5 добавлено и 3 удалено
  1. 5 3
      packages/app/src/pages/screen/list/hooks.ts

+ 5 - 3
packages/app/src/pages/screen/list/hooks.ts

@@ -1,7 +1,7 @@
 import {PurchaseScreenDataList} from '@models';
 import {useTimeout} from 'ahooks';
 import {debounce} from 'lodash-es';
-import {useEffect, useMemo, useRef, useState} from 'react';
+import {useEffect, useMemo, useRef, useState, startTransition} from 'react';
 import {FixedSizeList, ListOnScrollProps} from 'react-window';
 
 function nextTick(fn: () => void) {
@@ -86,8 +86,10 @@ export function useInfiniteScroll(data: PurchaseScreenDataList[]) {
   function scrollToTop() {
     nowIdx.current = 0;
 
-    setSmooth(false);
-    setDelay(true);
+    nextTick(function () {
+      setSmooth(false);
+      setDelay(true);
+    });
 
     scrollRef.current?.scrollTo(0);
   }