自定义 React Context Providers

随着你在 Admin Panel 中添加越来越多的 Custom Components,你可能会发现需要为应用添加额外的 React Context。Payload 允许你注入自己的 context providers,从而可以导出自定义 hooks 等。

要添加 Custom Provider,可以在 Payload Config 中使用 admin.components.providers 属性:

import { buildConfig } from 'payload'

export default buildConfig({
  // ...
  admin: {
    components: {
      providers: ['/path/to/MyProvider'], // highlight-line
    },
  },
})

然后按照以下方式构建你的 Custom Provider:

'use client'
import React, { createContext, use } from 'react'

const MyCustomContext = React.createContext(myCustomValue)

export function MyProvider({ children }: { children: React.ReactNode }) {
  return <MyCustomContext value={myCustomValue}>{children}</MyCustomContext>
}

export const useMyCustomContext = () => use(MyCustomContext)

关于如何构建 Custom Components 的详细信息,请参阅 Building Custom Components

提醒: React Context 仅存在于 Client Components 中。这意味着它们必须在文件顶部包含 use client 指令,并且不能包含仅限服务器的代码。要在此处使用 Server Component,只需用 Server Component 包裹 你的 Client Component。