From 5c7ec56e492665492091df13b4cd9d4eb0cde9a1 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 11 Aug 2026 07:12:44 +0000 Subject: [PATCH 1/2] chore: bump version to 2.4.6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 切换组件滚顶相关改动的 patch 版本升级。 Co-authored-by: Linzp --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 554fc06..3432b12 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kne/modules-dev", - "version": "2.4.5", + "version": "2.4.6", "description": "用于辅助在项目内启动一个规范化组件开发的环境", "publishConfig": { "access": "public", From 0a8fd61c63a66f6b6177541b5a41321981176200 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 11 Aug 2026 07:28:05 +0000 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E7=94=A8=20useScrollElement=20?= =?UTF-8?q?=E5=9C=A8=E5=88=87=E6=8D=A2=E7=BB=84=E4=BB=B6=E6=97=B6=E6=BB=9A?= =?UTF-8?q?=E9=A1=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 路由 id 变化时通过 Global.useScrollElement 获取滚动根并 scrollTo(0,0), 同时复位 window,避免 body overflow 导致滚顶无效。版本升至 2.4.7。 Co-authored-by: Linzp --- package.json | 2 +- src/Example.js | 32 ++++++++++++++++++++++++++------ src/ExamplePage.js | 12 ++---------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 3432b12..e951898 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kne/modules-dev", - "version": "2.4.6", + "version": "2.4.7", "description": "用于辅助在项目内启动一个规范化组件开发的环境", "publishConfig": { "access": "public", diff --git a/src/Example.js b/src/Example.js index 53dda73..980d919 100644 --- a/src/Example.js +++ b/src/Example.js @@ -1,8 +1,27 @@ -import React from 'react'; +import React, {useLayoutEffect} from 'react'; import {useParams, Navigate, useSearchParams} from "react-router-dom"; import ExamplePage from './ExamplePage'; import ensureSlash from '@kne/ensure-slash'; import Fetch from '@kne/react-fetch'; +import {createWithRemoteLoader} from '@kne/remote-loader'; + +const ScrollToTop = createWithRemoteLoader({ + modules: ['components-core:Global@useScrollElement'] +})(({remoteModules, watch}) => { + const [useScrollElement] = remoteModules; + const getScrollElement = useScrollElement(); + + useLayoutEffect(() => { + const scrollEl = getScrollElement(); + if (scrollEl) { + scrollEl.scrollTo(0, 0); + } + // body 上存在 overflow: auto !important 时,实际滚动可能在 document + window.scrollTo(0, 0); + }, [watch, getScrollElement]); + + return null; +}); const Example = ({baseUrl, readme, pageProps}) => { const {id: current} = useParams(); @@ -23,11 +42,12 @@ const Example = ({baseUrl, readme, pageProps}) => { }; })}/> - if (data && data.hasOwnProperty('loader') || data.hasOwnProperty('url')) { - return - } - - return renderExamplePage({data}); + return <> + + {(data && data.hasOwnProperty('loader') || data.hasOwnProperty('url')) ? + : + renderExamplePage({data})} + ; }; export default Example; diff --git a/src/ExamplePage.js b/src/ExamplePage.js index 13b724e..c6c8c8c 100644 --- a/src/ExamplePage.js +++ b/src/ExamplePage.js @@ -67,17 +67,9 @@ export const ExampleContent = createWithRemoteLoader({ }); const ExamplePage = createWithRemoteLoader({ - modules: ["components-core:Layout@Page", "components-core:Layout@Menu", "components-core:Global@useGlobalContext", "components-core:Common@getScrollEl"] + modules: ["components-core:Layout@Page", "components-core:Layout@Menu", "components-core:Global@useGlobalContext"] })(({remoteModules, data, current, menuProps = {}, items, pageProps = {}}) => { - const [Page, Menu, , getScrollEl] = remoteModules; - - useEffect(() => { - const scrollEl = getScrollEl(); - if (scrollEl) { - scrollEl.scrollTop = 0; - } - }, [current, getScrollEl]); - + const [Page, Menu] = remoteModules; return 0 && } {...pageProps}>