lowcode-engine icon indicating copy to clipboard operation
lowcode-engine copied to clipboard

自定义物料里面可以进行网络请求吗?

Open yuanAIhan opened this issue 11 months ago • 2 comments

我在自定义物料的时候,想在自定义物料里面去获取一些数据,然后根据数据的值来展示当前的组件内容。 我看目前自定义物料本身也是直接实现一个react组件,应该是可以实现网络请求的?

但是我在定义x6的物料的时候发现,x6本身返回的不是一个组件,只是一个节点配置的属性,请问这个时候如何实现在物料里面去网络请求呢?

yuanAIhan avatar Mar 12 '24 10:03 yuanAIhan

就是如何在自定义物料里面实现一个网络请求呀?

yuanAIhan avatar Mar 12 '24 10:03 yuanAIhan

渲染低代码页面时被如下包裹

createElement(AppContext.Provider, {
          value: {
            appHelper,
            components: allComponents,
            engine: this,
          },
        }, createElement(ConfigProvider, {
          device: this.props.device,
          locale: this.props.locale,
        }, createElement(Comp, {
          key: schema.__ctx && `${schema.__ctx.lceKey}_${schema.__ctx.idx || '0'}`,
          ref: this.__getRef,
          __appHelper: appHelper,
          __components: allComponents,
          __schema: schema,
          __designMode: designMode,
          ...this.props,
        })));

AppContext 为

export default function contextFactory() {
  const { createContext } = adapter.getRuntime();

  let context = (window as any).__appContext;
  if (!context) {
    context = createContext({});
    (window as any).__appContext = context;
  }
  return context;
}

所以在组件中可以这样获取到appHelper

const { appHelper } = useContext((window as any).__appContext);

appHelper中包含了requestHandlersMap,你可以使用其中的fetch完成网络请求,它与低代码引擎共用了网络模块。

AndyJinSS avatar Mar 25 '24 07:03 AndyJinSS