Skip to content
Merged

Linzp #122

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
3 changes: 1 addition & 2 deletions doc/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,14 @@ const Entry = createEntry(children);
| 属性名 | 说明 | 类型 | 默认值 |
|-----|----|----|-----|
| data | 组件数据 | object | - |
| enableResponsiveProvider | 是否在 contextComponent 外包一层 `@kne/responsive-utils` 的 `ResponsiveProvider` | boolean | `false`(`@kne/example-driver` ≥0.1.24 已在 LiveCode 内注入,默认无需开启) |

```js
import {ExampleDriverContext} from '@kne/modules-dev/dist/index';
```

### ExampleDriverContext

示例 `contextComponent` 包装器(`GlobalProvider` + `MemoryRouter`)。可通过 `enableResponsiveProvider` 可选叠加 `ResponsiveProvider`。
示例 `contextComponent` 包装器(`GlobalProvider` + `MemoryRouter`)。响应式上下文由 `@kne/example-driver` LiveCode 内注入,无需在此层再包 `ResponsiveProvider`。

```js
import {FontList} from '@kne/modules-dev/dist/index';
Expand Down
2 changes: 2 additions & 0 deletions lib/modulefederation.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ module.exports = {
singleton: true, requiredVersion: false
}, '@kne/global-preset': {
singleton: true, requiredVersion: false
}, '@kne/responsive-utils': {
singleton: true, requiredVersion: false
}
}
};
8 changes: 3 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@kne/modules-dev",
"version": "2.4.0",
"version": "2.4.3",
"description": "用于辅助在项目内启动一个规范化组件开发的环境",
"publishConfig": {
"access": "public",
Expand Down Expand Up @@ -41,12 +41,11 @@
"@kne/camel-case": "^0.1.1",
"@kne/craco-module-federation": "^1.1.9",
"@kne/ensure-slash": "^0.1.0",
"@kne/example-driver": "^0.1.24",
"@kne/example-driver": "^0.1.28",
"@kne/fetch-npm-package": "^0.1.4",
"@kne/md-doc": "^0.1.23",
"@kne/react-fetch": "^1.4.3",
"@kne/react-icon": "^0.1.4",
"@kne/responsive-utils": "^0.1.2",
"ajv": "^8.18.0",
"chokidar": "^3.5.3",
"classnames": "^2.3.2",
Expand All @@ -66,8 +65,7 @@
"antd": ">=5",
"loader-utils": "*",
"react": ">=18",
"react-router-dom": ">=6.4",
"@kne/responsive-utils": ">=0.1.2"
"react-router-dom": ">=6.4"
},
"browserslist": {
"production": [
Expand Down
15 changes: 3 additions & 12 deletions src/ExampleDriverContext.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,17 @@
import React from 'react';
import {MemoryRouter} from 'react-router-dom';
import {ResponsiveProvider} from '@kne/responsive-utils';
import {createWithRemoteLoader} from '@kne/remote-loader';

/**
* ExampleDriver contextComponent wrapper (GlobalProvider + router).
* `enableResponsiveProvider` defaults to false — @kne/example-driver LiveCode
* injects ResponsiveProvider with device-preview container mode since 0.1.24+.
*/
/** ExampleDriver contextComponent wrapper (GlobalProvider + router). ResponsiveProvider is injected by @kne/example-driver LiveCode. */
const ExampleDriverContext = createWithRemoteLoader({
modules: ['components-core:Global@GlobalProvider']
})(({remoteModules, children, enableResponsiveProvider = false, ...props}) => {
})(({remoteModules, children, ...props}) => {
const [GlobalProvider] = remoteModules;
const tree = (
return (
<MemoryRouter>
<GlobalProvider {...props}>{children}</GlobalProvider>
</MemoryRouter>
);
if (enableResponsiveProvider) {
return <ResponsiveProvider>{tree}</ResponsiveProvider>;
}
return tree;
});

export default ExampleDriverContext;
10 changes: 3 additions & 7 deletions src/ExamplePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,19 @@ import ExampleDriverContext from './ExampleDriverContext';

export const ExampleContent = createWithRemoteLoader({
modules: ["components-core:Global@useGlobalContext", "components-core:Global@usePreset"]
})(({remoteModules, data, enableResponsiveProvider = false}) => {
})(({remoteModules, data}) => {
const [useGlobalContext, usePreset] = remoteModules;
const {global: global} = useGlobalContext();
const preset = usePreset();

const exampleStyle = get(data, 'example.style');
const DriverContext = useMemo(() => {
return ({children}) => (
<ExampleDriverContext
{...global}
preset={preset}
enableResponsiveProvider={enableResponsiveProvider}
>
<ExampleDriverContext {...global} preset={preset}>
{children}
</ExampleDriverContext>
);
}, [global, preset, enableResponsiveProvider]);
}, [global, preset]);
useEffect(() => {
if (!exampleStyle) {
return;
Expand Down