From 559f57c1f1d7c9c308c5b94846345f1eb58ec47d Mon Sep 17 00:00:00 2001 From: hamono Date: Sat, 14 May 2022 11:40:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=B0=E5=BD=95=E4=B8=BB=E9=A1=B5?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E4=BD=8D=E7=BD=AE=EF=BC=8C=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E6=97=B6=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BlogView/BlogListPage/BlogList/index.tsx | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/views/BlogView/BlogListPage/BlogList/index.tsx b/src/views/BlogView/BlogListPage/BlogList/index.tsx index b8eb710..20bdafc 100644 --- a/src/views/BlogView/BlogListPage/BlogList/index.tsx +++ b/src/views/BlogView/BlogListPage/BlogList/index.tsx @@ -1,4 +1,10 @@ -import React, { useState, useCallback, useDeferredValue, useMemo } from 'react'; +import React, { + useState, + useCallback, + useDeferredValue, + useMemo, + useEffect +} from 'react'; import style from './style.scss'; import BlogItem from '../BlogItem'; import { Radio, Input, Empty } from 'antd'; @@ -65,6 +71,38 @@ export default function BlogList() { .filter(({ matchLength }) => matchLength); }, [blogSummarys, JSON.stringify(searchWords)]); + + useEffect(() => { + + const offsets = parseInt(sessionStorage.getItem("offsets")) ; + + if(offsets){ + window.scrollTo(0, offsets) + } + + + let flag = false; + const scrollHnadler = () => { + if (!flag) { + // 使用requestAnimationFrame进行节流 + requestAnimationFrame(() => { + sessionStorage.setItem("offsets", window.scrollY.toString()) + + flag = false; + }); + } + + flag = true; + }; + + window.addEventListener('scroll', scrollHnadler, false); + + return () => { + window.removeEventListener('scroll', scrollHnadler, false); + flag = null; + }; + }, [selections]); + return ( <>