lowcode-datasource-axios-handler
v1.0.0
Published
lowcode-engine 低码数据源axios处理程序
Downloads
1
Readme
lowcode-datasource-axios-handler
lowcode-engine 低码数据源 axios 处理程序
安装
npm install -S lowcode-datasource-axios-handler
使用
import 引入 index.ts
import { createAxiosHandler } from "lowcode-datasource-axios-handler";
async function registerPlugins() {
await plugins.register(InjectPlugin);
// 此处摘片段
await plugins.register(DataSourcePanePlugin, {
importPlugins: [],
dataSourceTypes: [
{
type: 'axios',
},
{
type: 'fetch',
},
{
type: 'jsonp',
},
],
});
}
(async function main() {
await registerPlugins();
init(document.getElementById('lce-container')!, {
// locale: 'zh-CN',
enableCondition: true,
enableCanvasLock: true,
// 默认绑定变量
supportVariableGlobally: true,
requestHandlersMap: {
axios: createAxiosHandler(),
fetch: createFetchHandler(),
},
});
})();
import 引入 preview.tsx
import ReactDOM from 'react-dom';
import React, { useState } from 'react';
import { Loading } from '@alifd/next';
import { buildComponents, assetBundle, AssetLevel, AssetLoader } from '@alilc/lowcode-utils';
import ReactRenderer from '@alilc/lowcode-react-renderer';
import { injectComponents } from '@alilc/lowcode-plugin-inject';
import { createFetchHandler } from '@alilc/lowcode-datasource-fetch-handler';
import { createUmiRequestHandler } from '@alilc/lowcode-datasource-umi-request-handler';
import { createAxiosHandler } from './lowcode-datasource-axios-handler';
import {
getProjectSchemaFromLocalStorage,
getPackagesFromLocalStorage,
} from './services/mockService';
const getScenarioName = function () {
if (location.search) {
return new URLSearchParams(location.search.slice(1)).get('scenarioName') || 'index';
}
return 'index';
};
const SamplePreview = () => {
const [data, setData] = useState({});
async function init() {
const scenarioName = getScenarioName();
const packages = getPackagesFromLocalStorage(scenarioName);
const projectSchema = getProjectSchemaFromLocalStorage(scenarioName);
const { componentsMap: componentsMapArray, componentsTree } = projectSchema;
const componentsMap: any = {};
componentsMapArray.forEach((component: any) => {
componentsMap[component.componentName] = component;
});
const schema = componentsTree[0];
const libraryMap = {};
const libraryAsset = [];
packages.forEach(({ package: _package, library, urls, renderUrls }) => {
libraryMap[_package] = library;
if (renderUrls) {
libraryAsset.push(renderUrls);
} else if (urls) {
libraryAsset.push(urls);
}
});
const vendors = [assetBundle(libraryAsset, AssetLevel.Library)];
// TODO asset may cause pollution
const assetLoader = new AssetLoader();
await assetLoader.load(libraryAsset);
const components = await injectComponents(buildComponents(libraryMap, componentsMap));
setData({
schema,
components,
});
}
const { schema, components } = data;
if (!schema || !components) {
init();
return <Loading fullScreen />;
}
return (
<div className="lowcode-plugin-sample-preview">
<ReactRenderer
className="lowcode-plugin-sample-preview-content"
schema={schema}
components={components}
appHelper={{
requestHandlersMap: {
axios: createAxiosHandler(),
fetch: createFetchHandler(),
},
}}
/>
</div>
);
};
ReactDOM.render(<SamplePreview />, document.getElementById('ice-container'));