2025发文新方向:AI+量化 人工智能与金融完美融合!

阅读 9

01-25 12:00

第一步:创建全局组件上下文 (GlobalComponentProvider)
我们将创建一个 React Context 和 Provider,用于存储和提供全局组件。

// src/context/GlobalComponentProvider.tsx
import React, { createContext, ReactNode, useContext } from "react";
import { Button, Input } from "antd"; // 这里导入你想全局使用的组件

// 创建一个 Context 存储全局组件
const GlobalComponentContext = createContext<Record<string, React.ComponentType<any>> | null>(null);

interface GlobalComponentProviderProps {
  children: ReactNode;
}

// 创建 Provider 将全局组件注入 Context
export const GlobalComponentProvider = ({ children }: GlobalComponentProviderProps) => {
  const globalComponents = {
    Button, // 在此处注册所有你想全局使用的组件
    Input,
  };

  return (
    <GlobalComponentContext.Provider value={globalComponents}>
      {children}
    </GlobalComponentContext.Provider>
  );
};

// 自定义 Hook 用于访问全局组件
export const useGlobalComponents = () => {
  const context = useContext(GlobalComponentContext);
  if (!context) {
    throw new Error("useGlobalComponents must be used within a GlobalComponentProvider");
  }
  return context;
};

第二步:在项目入口文件中注入 GlobalComponentProvider
将 GlobalComponentProvider 包裹在应用的最外层组件中(通常在 index.tsx 或 main.tsx 文件中),这样所有子组件都能访问全局组件。

// src/index.tsx
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { GlobalComponentProvider } from "./context/GlobalComponentProvider";

const root = ReactDOM.createRoot(document.getElementById("root")!);
root.render(
  <React.StrictMode>
    <GlobalComponentProvider>
      <App />
    </GlobalComponentProvider>
  </React.StrictMode>
);

第三步:在组件中使用全局组件
通过 useGlobalComponents Hook,可以在任意组件中访问和使用这些全局注册的组件。

// src/App.tsx
import React from "react";
import { useGlobalComponents } from "./context/GlobalComponentProvider";

const App = () => {
  // 使用自定义 Hook 获取全局组件
  const { Button, Input } = useGlobalComponents();

  return (
    <div>
      <h1>Global Components Example</h1>
      <Button type="primary">Click Me</Button>
      <Input placeholder="Type something" />
    </div>
  );
};

export default App;

精彩评论(0)

0 0 举报