import React, { createContext, useContext, useRef, useEffect, ReactNode, useState } from 'react'; import { createOkxSwapWidget, type OkxSwapWidgetHandler, type IWidgetConfig } from './index'; // 创建上下文 const DexWidgetContext = createContext(null); interface DexWidgetProviderProps { children: ReactNode; config: IWidgetConfig; } export const DexWidgetProvider: React.FC = ({ children, config }) => { const iframeContainerRef = useRef(null); const [providerState, setProviderState] = useState(null); useEffect(() => { if (iframeContainerRef.current) { setProviderState(createOkxSwapWidget(iframeContainerRef.current, config)) } return () => { providerState?.destroy(); }; }, [config]); console.log('widgetHandlerRef.current', providerState, iframeContainerRef); return (
{children} ); }; export const useDexWidget = () => { return useContext(DexWidgetContext); }; export { createOkxSwapWidget, OkxSwapWidgetHandler };