嵌入查看组件
嵌入查看器组件可以让您快速在您的页面中嵌入一个可交互的图表。
<datadata-embedded-viewer theme="fmz-dark" language="zh-CN" query-id="<query-id>" api-token="<your-token>">
  <div>loading...</div>
</datadata-embedded-viewer>
Attributes
| Attribute | Description | 
|---|---|
| theme | 可选,指定配置方案,用来适配网站的颜色模式,值有 light、dark | 
| language | 可选,指定组件的语言,值有 zh-CN、en-US | 
| api-token * | 必须,执行 API-Token | 
| query-id * | 必须,要查看的 Chart ID | 
框架集成
Web-Components 可以支持任何前段框架,其他框架集成参考官方的使用 Web-Components 流程即可。
- React
- Vue
import { forwardRef, useEffect, useLayoutEffect, useState, type HTMLAttributes, type PropsWithChildren } from "react";
export type DatadataEmbeddedViewerProps = HTMLAttributes<HTMLElement> &
  PropsWithChildren<{
    theme?: 'dark' | 'light';
    queryId: string;
    apiToken: string;
    language?: 'zh-CN' | 'en-US';
  }>;
export const DatadataEmbeddedViewer = forwardRef<HTMLElement, DatadataEmbeddedViewerProps>((props, ref) => {
  const { theme, queryId, apiToken, language, children, ...htmlProps } = props;
  const [hostElement, setHostElement] = useState<HTMLElement>(null);
  useLayoutEffect(() => {
    // import(/* webpackIgnore: true */ "https://www.datadata.cn/web-components/embedded-editor/index.mjs");
    loadDatadataComponents();
  }, []);
  useEffect(() => {
    if (typeof ref === "function") {
      ref(hostElement);
    } else if (ref) {
      ref.current = hostElement;
    }
  }, [hostElement]);
  return (
    <datadata-embedded-viewer
      {...htmlProps}
      ref={setHostElement}
      theme={theme}
      language={language}
      query-id={queryId}
      api-token={apiToken}
    >
      {children}
    </datadata-embedded-viewer>
  );
});
async function loadDatadataComponents() {
  await eval(`import("https://www.datadata.cn/web-components/embedded-editor/index.mjs")`);
}
declare global {
  namespace React {
    namespace JSX {
      interface IntrinsicElements {
        "datadata-embedded-viewer": any;
      }
    }
  }
}
// TODO