refactor: storechanger&functioncenter
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* @Author: yehuozhili
|
||||
* @Date: 2021-07-07 14:46:01
|
||||
* @LastEditors: yehuozhili
|
||||
* @LastEditTime: 2021-07-13 11:30:17
|
||||
* @LastEditTime: 2022-04-23 18:40:40
|
||||
* @FilePath: \dooringx\packages\dooringx-example\src\plugin\formComponents\actionButton.tsx
|
||||
*/
|
||||
|
||||
@@ -39,14 +39,8 @@ function ActionButton(props: ActionButtonProps) {
|
||||
const functionConfig = functionCenter.getConfigMap();
|
||||
const functionMap = functionCenter.getFunctionMap();
|
||||
const functionNameMap = functionCenter.getNameMap();
|
||||
const isEdit = props.config.getStoreChanger().isEdit();
|
||||
const dataMap = props.config.getDataCenter().getDataMap();
|
||||
let modalMap: Record<string, IStoreData>;
|
||||
if (isEdit) {
|
||||
modalMap = props.config.getStoreChanger().getOrigin()?.now.modalMap || {};
|
||||
} else {
|
||||
modalMap = props.config.getStore().getData().modalMap;
|
||||
}
|
||||
let modalMap = props.config.getStore().getData().modalMap;
|
||||
|
||||
const handleInputDataSource = useCallback(
|
||||
(
|
||||
|
@@ -2,12 +2,37 @@
|
||||
* @Author: yehuozhili
|
||||
* @Date: 2021-07-07 14:22:51
|
||||
* @LastEditors: yehuozhili
|
||||
* @LastEditTime: 2021-08-05 14:53:12
|
||||
* @LastEditTime: 2022-04-24 00:11:35
|
||||
* @FilePath: \dooringx\packages\dooringx-example\src\plugin\functionMap\index.ts
|
||||
*/
|
||||
import { FunctionCenterType } from 'dooringx-lib/dist/core/functionCenter';
|
||||
|
||||
export const functionMap: FunctionCenterType = {
|
||||
sleep: {
|
||||
fn: (ctx, next, _config, args) => {
|
||||
const arr = args['_sk'];
|
||||
let num = parseInt(arr[0]);
|
||||
if (isNaN(num)) {
|
||||
next();
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
next();
|
||||
}, arr[0]);
|
||||
}
|
||||
},
|
||||
config: [
|
||||
{
|
||||
name: '输入数值单位ms',
|
||||
data: ['input'],
|
||||
options: {
|
||||
receive: '_sk',
|
||||
multi: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
name: '等待',
|
||||
componentId: '_inner',
|
||||
},
|
||||
上下文转对象: {
|
||||
fn: (ctx, next, _config, args) => {
|
||||
const arr = args['_sk'];
|
||||
@@ -39,5 +64,6 @@ export const functionMap: FunctionCenterType = {
|
||||
},
|
||||
],
|
||||
name: '上下文转对象',
|
||||
componentId: '_inner',
|
||||
},
|
||||
};
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* @Author: yehuozhili
|
||||
* @Date: 2021-07-07 14:35:38
|
||||
* @LastEditors: yehuozhili
|
||||
* @LastEditTime: 2021-08-05 15:10:31
|
||||
* @LastEditTime: 2022-04-24 00:29:46
|
||||
* @FilePath: \dooringx\packages\dooringx-example\src\plugin\registComponents\button.tsx
|
||||
*/
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
} from 'dooringx-lib';
|
||||
import { FormMap } from '../formTypes';
|
||||
import { ComponentRenderConfigProps } from 'dooringx-lib/dist/core/components/componentItem';
|
||||
|
||||
let s = 0;
|
||||
function ButtonTemp(pr: ComponentRenderConfigProps) {
|
||||
const props = pr.data.props;
|
||||
const eventCenter = useMemo(() => {
|
||||
@@ -35,12 +35,13 @@ function ButtonTemp(pr: ComponentRenderConfigProps) {
|
||||
const [text, setText] = useState('');
|
||||
const op1 = props.op1;
|
||||
useEffect(() => {
|
||||
let unregist = () => {};
|
||||
let unRegist = () => {};
|
||||
if (op1) {
|
||||
console.log('kkk');
|
||||
const functionCenter = eventCenter.getFunctionCenter();
|
||||
unregist = functionCenter.register(
|
||||
`${pr.data.id}+changeText`,
|
||||
async (ctx, next, config, args: any, _eventList, iname) => {
|
||||
unRegist = functionCenter.register({
|
||||
id: `${pr.data.id}+changeText`,
|
||||
fn: async (ctx, next, config, args: any, _eventList, iname) => {
|
||||
const userSelect = iname.data;
|
||||
const ctxVal = changeUserValue(
|
||||
userSelect['改变文本数据源'],
|
||||
@@ -49,11 +50,13 @@ function ButtonTemp(pr: ComponentRenderConfigProps) {
|
||||
config,
|
||||
ctx
|
||||
);
|
||||
const text = ctxVal[0];
|
||||
s = s++;
|
||||
const text = ctxVal[0] + s;
|
||||
|
||||
setText(text);
|
||||
next();
|
||||
},
|
||||
[
|
||||
config: [
|
||||
{
|
||||
name: '改变文本数据源',
|
||||
data: ['ctx', 'input', 'dataSource'],
|
||||
@@ -63,14 +66,16 @@ function ButtonTemp(pr: ComponentRenderConfigProps) {
|
||||
},
|
||||
},
|
||||
],
|
||||
`${pr.data.id}+改变文本函数`
|
||||
);
|
||||
name: `${pr.data.id}+改变文本函数`,
|
||||
componentId: pr.data.id,
|
||||
});
|
||||
}
|
||||
return () => {
|
||||
unregist();
|
||||
if (pr.context === 'preview') {
|
||||
unRegist(); // 必须在预览时注销,否则影响二次点击效果,不在预览注销影响编辑时跨弹窗
|
||||
}
|
||||
};
|
||||
}, [op1]);
|
||||
|
||||
return (
|
||||
<Button
|
||||
style={{
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* @Author: yehuozhili
|
||||
* @Date: 2021-08-05 10:50:57
|
||||
* @LastEditors: yehuozhili
|
||||
* @LastEditTime: 2021-08-05 15:10:46
|
||||
* @LastEditTime: 2022-04-23 23:38:31
|
||||
* @FilePath: \dooringx\packages\dooringx-example\src\plugin\registComponents\inputCo.tsx
|
||||
*/
|
||||
|
||||
@@ -33,9 +33,9 @@ const InputTemp = (pr: InputProps) => {
|
||||
let unregist = () => {};
|
||||
if (props.op1) {
|
||||
const functionCenter = eventCenter.getFunctionCenter();
|
||||
unregist = functionCenter.register(
|
||||
`${pr.data.id}+validate-func`,
|
||||
async (_ctx, next, _config, _args: any, _eventList, _iname) => {
|
||||
unregist = functionCenter.register({
|
||||
id: `${pr.data.id}+validate-func`,
|
||||
fn: async (_ctx, next, _config, _args: any, _eventList, _iname) => {
|
||||
if (value === '') {
|
||||
setErr(props.warnning);
|
||||
} else {
|
||||
@@ -43,7 +43,7 @@ const InputTemp = (pr: InputProps) => {
|
||||
next();
|
||||
}
|
||||
},
|
||||
[
|
||||
config: [
|
||||
{
|
||||
name: '验证已填函数',
|
||||
data: [],
|
||||
@@ -53,8 +53,9 @@ const InputTemp = (pr: InputProps) => {
|
||||
},
|
||||
},
|
||||
],
|
||||
`${pr.data.id}+验证已填函数`
|
||||
);
|
||||
name: `${pr.data.id}+验证已填函数`,
|
||||
componentId: pr.data.id,
|
||||
});
|
||||
}
|
||||
return () => {
|
||||
unregist();
|
||||
@@ -65,14 +66,14 @@ const InputTemp = (pr: InputProps) => {
|
||||
let unregist = () => {};
|
||||
if (props.op2) {
|
||||
const functionCenter = eventCenter.getFunctionCenter();
|
||||
unregist = functionCenter.register(
|
||||
`${pr.data.id}+get-input`,
|
||||
async (ctx, next, _config, args: any, _eventList, _iname) => {
|
||||
unregist = functionCenter.register({
|
||||
id: `${pr.data.id}+get-input`,
|
||||
fn: async (ctx, next, _config, args: any, _eventList, _iname) => {
|
||||
const key = args['_changeval'][0];
|
||||
ctx[key] = value;
|
||||
next();
|
||||
},
|
||||
[
|
||||
config: [
|
||||
{
|
||||
name: '获取数据至上下文',
|
||||
data: ['ctx'],
|
||||
@@ -82,8 +83,9 @@ const InputTemp = (pr: InputProps) => {
|
||||
},
|
||||
},
|
||||
],
|
||||
`${pr.data.id}+获取输入数据`
|
||||
);
|
||||
name: `${pr.data.id}+获取输入数据`,
|
||||
componentId: pr.data.id,
|
||||
});
|
||||
}
|
||||
return () => {
|
||||
unregist();
|
||||
|
Reference in New Issue
Block a user