Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@kne/modules-dev",
"version": "2.4.5",
"version": "2.4.7",
"description": "用于辅助在项目内启动一个规范化组件开发的环境",
"publishConfig": {
"access": "public",
Expand Down
32 changes: 26 additions & 6 deletions src/Example.js
Original file line number Diff line number Diff line change
@@ -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();
Expand All @@ -23,11 +42,12 @@ const Example = ({baseUrl, readme, pageProps}) => {
};
})}/>

if (data && data.hasOwnProperty('loader') || data.hasOwnProperty('url')) {
return <Fetch {...Object.assign({}, data)} render={renderExamplePage}/>
}

return renderExamplePage({data});
return <>
<ScrollToTop watch={current} remoteFallback={null}/>
{(data && data.hasOwnProperty('loader') || data.hasOwnProperty('url')) ?
<Fetch {...Object.assign({}, data)} render={renderExamplePage}/> :
renderExamplePage({data})}
</>;
};

export default Example;
12 changes: 2 additions & 10 deletions src/ExamplePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <Page title={camelCase(data.name || '')} className={style['example-page']}
menu={items && items.length > 0 &&
<Menu {...menuProps} currentKey={current} items={items}/>} {...pageProps}>
Expand Down