mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-13 01:21:58 +00:00
fix: 修复数据源的接入问题
This commit is contained in:
parent
a8a17492e9
commit
98ae1ed82c
@ -11,6 +11,19 @@
|
||||
"fileName": "test",
|
||||
"dataSource": {
|
||||
"list": [
|
||||
{
|
||||
"type": "fetch",
|
||||
"id": "请求商家数据,是一个 HTTP 请求,是一个 HTTP 请求,是一个 HTTP 请求",
|
||||
"isInit": true,
|
||||
"options": {
|
||||
"uri": "https://www.taobao.com",
|
||||
"params": {
|
||||
"a": 1,
|
||||
"b": true,
|
||||
"c": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"state": {
|
||||
|
||||
@ -135,6 +135,12 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
|
||||
return this.get('designMode') || 'design';
|
||||
}
|
||||
|
||||
@computed get requestHandlersMap(): any {
|
||||
// renderer 依赖
|
||||
// TODO: 需要根据 design mode 不同切换鼠标响应情况
|
||||
return this.get('requestHandlersMap') || null;
|
||||
}
|
||||
|
||||
@computed get componentsAsset(): Asset | undefined {
|
||||
return this.get('componentsAsset');
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ interface DesignerPluginState {
|
||||
renderEnv?: string;
|
||||
device?: string;
|
||||
simulatorUrl: Asset | null;
|
||||
requestHandlersMap: any;
|
||||
}
|
||||
|
||||
export default class DesignerPlugin extends PureComponent<PluginProps, DesignerPluginState> {
|
||||
@ -27,6 +28,7 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP
|
||||
renderEnv: 'default',
|
||||
device: 'default',
|
||||
simulatorUrl: null,
|
||||
requestHandlersMap: null,
|
||||
};
|
||||
|
||||
private _mounted = true;
|
||||
@ -43,6 +45,8 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP
|
||||
const renderEnv = await editor.get('renderEnv');
|
||||
const device = await editor.get('device');
|
||||
const simulatorUrl = await editor.get('simulatorUrl');
|
||||
// @TODO setupAssets 里设置 requestHandlersMap 不太合适
|
||||
const requestHandlersMap = await editor.get('requestHandlersMap');
|
||||
if (!this._mounted) {
|
||||
return;
|
||||
}
|
||||
@ -54,6 +58,7 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP
|
||||
renderEnv,
|
||||
device,
|
||||
simulatorUrl,
|
||||
requestHandlersMap,
|
||||
};
|
||||
this.setState(state);
|
||||
} catch (e) {
|
||||
@ -76,7 +81,7 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP
|
||||
|
||||
render(): React.ReactNode {
|
||||
const { editor } = this.props;
|
||||
const { componentMetadatas, library, extraEnvironment, renderEnv, device, simulatorUrl } = this.state;
|
||||
const { componentMetadatas, library, extraEnvironment, renderEnv, device, simulatorUrl, requestHandlersMap } = this.state;
|
||||
if (!library || !componentMetadatas) {
|
||||
// TODO: use a Loading
|
||||
return null;
|
||||
@ -95,6 +100,7 @@ export default class DesignerPlugin extends PureComponent<PluginProps, DesignerP
|
||||
renderEnv,
|
||||
device,
|
||||
simulatorUrl,
|
||||
requestHandlersMap,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -178,9 +178,10 @@ export default class BaseEngine extends Component {
|
||||
});
|
||||
}
|
||||
// 设置容器组件占位,若设置占位则在初始异步请求完成之前用loading占位且不渲染容器组件内部内容
|
||||
if (this.__parseData(schema.props && schema.props.autoLoading)) {
|
||||
// @TODO __showPlaceholder 的逻辑一旦开启就关不掉,先注释掉了
|
||||
/* if (this.__parseData(schema.props && schema.props.autoLoading)) {
|
||||
this.__showPlaceholder = (dataSource.list || []).some((item) => !!this.__parseData(item.isInit));
|
||||
}
|
||||
} */
|
||||
};
|
||||
|
||||
__render = () => {
|
||||
|
||||
@ -156,6 +156,7 @@ export default class BaseRender extends PureComponent {
|
||||
this.__showPlaceholder = true;
|
||||
reloadDataSource().then(() => {
|
||||
this.__showPlaceholder = false;
|
||||
// this.forceUpdate();
|
||||
// @TODO 是否需要 forceUpate
|
||||
resolve();
|
||||
});
|
||||
@ -190,9 +191,10 @@ export default class BaseRender extends PureComponent {
|
||||
});
|
||||
}
|
||||
// 设置容器组件占位,若设置占位则在初始异步请求完成之前用loading占位且不渲染容器组件内部内容
|
||||
this.__showPlaceholder = this.__parseData(schema.props && schema.props.autoLoading) && (dataSource.list || []).some(
|
||||
// @TODO __showPlaceholder 的逻辑一旦开启就关不掉,先注释掉了
|
||||
/* this.__showPlaceholder = this.__parseData(schema.props && schema.props.autoLoading) && (dataSource.list || []).some(
|
||||
(item) => !!this.__parseData(item.isInit),
|
||||
);
|
||||
); */
|
||||
};
|
||||
|
||||
__render = () => {
|
||||
|
||||
@ -98,14 +98,14 @@ class Renderer extends Component<{ renderer: SimulatorRenderer }> {
|
||||
|
||||
render() {
|
||||
const { renderer } = this.props;
|
||||
const { device, designMode } = renderer;
|
||||
const { device, designMode, requestHandlersMap } = renderer;
|
||||
return (
|
||||
<LowCodeRenderer
|
||||
schema={renderer.schema}
|
||||
components={renderer.components}
|
||||
appHelper={renderer.context}
|
||||
// context={renderer.context}
|
||||
requestHandlersMap={host.requestHandlersMap}
|
||||
requestHandlersMap={requestHandlersMap}
|
||||
designMode={designMode}
|
||||
device={device}
|
||||
suspended={renderer.suspended}
|
||||
|
||||
@ -48,6 +48,8 @@ export class SimulatorRenderer implements BuiltinSimulatorRenderer {
|
||||
// sync designMode
|
||||
this._designMode = host.designMode;
|
||||
|
||||
this._requestHandlersMap = host.requestHandlersMap;
|
||||
|
||||
// sync suspended
|
||||
|
||||
// sync scope
|
||||
@ -114,6 +116,12 @@ export class SimulatorRenderer implements BuiltinSimulatorRenderer {
|
||||
return this._designMode;
|
||||
}
|
||||
|
||||
@obx.ref private _requestHandlersMap = null;
|
||||
|
||||
@computed get requestHandlersMap(): any {
|
||||
return this._requestHandlersMap;
|
||||
}
|
||||
|
||||
@obx.ref private _device = 'default';
|
||||
|
||||
@computed get device() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user