diff --git a/packages/dooringx-dumi-doc/docs/API/index.en.md b/packages/dooringx-dumi-doc/docs/API/index.en.md
index 2ef7802..d4e1500 100644
--- a/packages/dooringx-dumi-doc/docs/API/index.en.md
+++ b/packages/dooringx-dumi-doc/docs/API/index.en.md
@@ -1,9 +1,6 @@
---
title: API
toc: menu
-nav:
- title: API
- order: 5
---
-In process
\ No newline at end of file
+In process
diff --git a/packages/dooringx-dumi-doc/docs/API/index.md b/packages/dooringx-dumi-doc/docs/API/index.md
index 2ef7802..12f1f50 100644
--- a/packages/dooringx-dumi-doc/docs/API/index.md
+++ b/packages/dooringx-dumi-doc/docs/API/index.md
@@ -1,9 +1,22 @@
---
title: API
toc: menu
-nav:
- title: API
- order: 5
---
-In process
\ No newline at end of file
+## useStoreState
+
+
+
+#### 传参:
+
+| 属性名 | 类型 | 说明 |
+| ---------------------------- | ---------------- | ---- |
+| config | UserConfig | |
+| extraFn | Function = () => {} | |
+| everyFn | Function = () => {} | |
+
+
+#### 返回值:
+
+`[IStoreData]`
+
diff --git a/packages/dooringx-example/src/plugin/index.tsx b/packages/dooringx-example/src/plugin/index.tsx
index a2a3722..7159308 100644
--- a/packages/dooringx-example/src/plugin/index.tsx
+++ b/packages/dooringx-example/src/plugin/index.tsx
@@ -29,6 +29,14 @@ const LeftRegistMap: LeftRegistComponentMapItem[] = [
img: 'https://img.guguzhu.com/d/file/android/ico/2021/09/08/rytzi2w34tm.png',
displayName: '输入框',
},
+ {
+ type: 'basic',
+ component: 'testco',
+ img: 'icon-anniu',
+ imgCustom: ,
+ displayName: '测试按钮',
+ urlFn: () => import('./registComponents/testco'),
+ },
];
export const defaultConfig: Partial = {
diff --git a/packages/dooringx-example/src/plugin/registComponents/testco.tsx b/packages/dooringx-example/src/plugin/registComponents/testco.tsx
new file mode 100644
index 0000000..a3fcaec
--- /dev/null
+++ b/packages/dooringx-example/src/plugin/registComponents/testco.tsx
@@ -0,0 +1,150 @@
+/*
+ * @Author: yehuozhili
+ * @Date: 2021-07-07 14:35:38
+ * @LastEditors: yehuozhili
+ * @LastEditTime: 2022-04-27 22:24:23
+ * @FilePath: \dooringx\packages\dooringx-example\src\plugin\registComponents\button.tsx
+ */
+
+import { Button } from 'antd';
+import React, { useEffect, useMemo, useState } from 'react';
+import {
+ changeUserValue,
+ createComponent,
+ createPannelOptions,
+ useDynamicAddEventCenter,
+ useRegistFunc,
+} from 'dooringx-lib';
+import { FormMap } from '../formTypes';
+import { ComponentRenderConfigProps } from 'dooringx-lib/dist/core/components/componentItem';
+function ButtonTemp(pr: ComponentRenderConfigProps) {
+ const props = pr.data.props;
+ const eventCenter = useMemo(() => {
+ return pr.config.getEventCenter();
+ }, [pr.config]);
+
+ useDynamicAddEventCenter(pr, `${pr.data.id}-init`, '初始渲染时机'); //注册名必须带id 约定!
+ useDynamicAddEventCenter(pr, `${pr.data.id}-click`, '点击执行时机');
+ useEffect(() => {
+ // 模拟抛出事件
+ if (pr.context === 'preview') {
+ eventCenter.runEventQueue(`${pr.data.id}-init`, pr.config);
+ }
+ }, [eventCenter, pr.config, pr.context, pr.data.id]);
+
+ const [text, setText] = useState('');
+ const op1 = props.op1;
+
+ const fn = useMemo(() => {
+ const functionCenter = eventCenter.getFunctionCenter();
+ return functionCenter.register({
+ id: `${pr.data.id}+changeText`,
+ fn: async (ctx, next, config, args: any, _eventList, iname) => {
+ const userSelect = iname.data;
+ const ctxVal = changeUserValue(
+ userSelect['改变文本数据源'],
+ args,
+ '_changeval',
+ config,
+ ctx
+ );
+ const text = ctxVal[0];
+ setText(text);
+ next();
+ },
+ config: [
+ {
+ name: '改变文本数据源',
+ data: ['ctx', 'input', 'dataSource'],
+ options: {
+ receive: '_changeval',
+ multi: false,
+ },
+ },
+ ],
+ name: `${pr.data.id}+改变文本函数`,
+ componentId: pr.data.id,
+ });
+ }, []);
+
+ useRegistFunc(op1, pr.context, fn);
+
+ return (
+
+ );
+}
+
+const MButton = createComponent({
+ name: 'testco',
+ display: '测试按钮',
+ props: {
+ style: [
+ createPannelOptions('input', {
+ receive: 'text',
+ label: '文字',
+ }),
+ ],
+ fn: [
+ createPannelOptions('switch', {
+ receive: 'op1',
+ label: '改变文本函数',
+ }),
+ ],
+ animate: [createPannelOptions('animateControl', {})],
+ actions: [createPannelOptions('actionButton', {})],
+ },
+ initData: {
+ props: {
+ text: 'yehuozhili',
+ sizeData: [100, 30],
+ backgroundColor: 'rgba(0,132,255,1)',
+ lineHeight: 1,
+ borderRadius: 0,
+ op1: false,
+ borderData: {
+ borderWidth: 0,
+ borderColor: 'rgba(0,0,0,1)',
+ borderStyle: 'solid',
+ },
+ fontData: {
+ fontSize: 14,
+ textDecoration: 'none',
+ fontStyle: 'normal',
+ color: 'rgba(255,255,255,1)',
+ fontWeight: 'normal',
+ },
+ },
+ width: 100, // 绝对定位元素初始必须有宽高,否则适配会有问题。
+ height: 30, // 绝对定位元素初始必须有宽高,否则适配会有问题。
+ rotate: {
+ canRotate: true,
+ value: 0,
+ },
+ canDrag: true, // false就不能拖
+ },
+ render: (data, context, store, config) => {
+ return ;
+ },
+ resize: true,
+});
+
+export default MButton;
diff --git a/packages/dooringx-lib/src/core/components/abstract.ts b/packages/dooringx-lib/src/core/components/abstract.ts
index 00deb1a..00aafd3 100644
--- a/packages/dooringx-lib/src/core/components/abstract.ts
+++ b/packages/dooringx-lib/src/core/components/abstract.ts
@@ -21,3 +21,30 @@ export class ComponentItemFactory implements ComponentItem {
public remoteConfig: ComponentItem['remoteConfig'] = {}
) {}
}
+export interface IPluginConfig {
+ name: ComponentItemFactory['name'];
+ display: ComponentItemFactory['display'];
+ props: ComponentItemFactory['props'];
+ initData: ComponentItemFactory['initData'];
+ render: ComponentItem['render'];
+ resize?: ComponentItem['resize'];
+ needPosition?: ComponentItem['needPosition'];
+ init?: ComponentItem['init'];
+ destroy?: ComponentItem['destroy'];
+ remoteConfig?: ComponentItem['remoteConfig'];
+}
+
+export function createComponent(config: IPluginConfig) {
+ return new ComponentItemFactory(
+ config.name,
+ config.display,
+ config.props,
+ config.initData,
+ config.render,
+ config.resize,
+ config.needPosition,
+ config.init,
+ config.destroy,
+ config.remoteConfig
+ );
+}
diff --git a/packages/dooringx-lib/src/core/utils/index.ts b/packages/dooringx-lib/src/core/utils/index.ts
index 7d8e571..80fe6c5 100644
--- a/packages/dooringx-lib/src/core/utils/index.ts
+++ b/packages/dooringx-lib/src/core/utils/index.ts
@@ -7,20 +7,6 @@ import { specialCoList } from './special';
import deepCopys from 'deepcopy';
import { FunctionDataMap } from '../functionCenter/config';
import UserConfig from '../../config';
-import { IPluginConfig } from './types';
-import { ComponentItemFactory } from '../components/abstract';
-
-// 创建插件
-export const createPlugin = (config: IPluginConfig) => {
- return new ComponentItemFactory(
- config.key,
- config.name,
- {},
- config.attr,
- config.render,
- config.attr.resize
- );
-};
export function deepCopy(obj: T): T {
return deepCopys(obj);
diff --git a/packages/dooringx-lib/src/core/utils/types.ts b/packages/dooringx-lib/src/core/utils/types.ts
deleted file mode 100644
index bbb4a80..0000000
--- a/packages/dooringx-lib/src/core/utils/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface IPluginConfig {
- key: string;
- name: string;
- attr: any;
- render: (props: any) => JSX.Element;
- resize?: boolean;
-}
diff --git a/packages/dooringx-lib/src/index.tsx b/packages/dooringx-lib/src/index.tsx
index c1a6ca2..710b493 100644
--- a/packages/dooringx-lib/src/index.tsx
+++ b/packages/dooringx-lib/src/index.tsx
@@ -40,7 +40,7 @@ export { scaleFn } from './core/scale/index';
// 以下导出用于制作插件
// 用于制作组件的函数
-export { ComponentItemFactory } from './core/components/abstract';
+export { ComponentItemFactory, createComponent } from './core/components/abstract';
// 用于菜单拖拽的函数
export { dragEventResolve } from './core/crossDrag/index';
// 用于制作组件配置项的函数