MainScrollContainerContext.tsx 944 B

12345678910111213141516171819202122232425262728
  1. import { createContext, useContext, useState, type ReactNode } from 'react'
  2. const MainScrollContainerContext = createContext<HTMLElement | null>(null)
  3. const SetMainScrollContainerContext = createContext<
  4. React.Dispatch<React.SetStateAction<HTMLElement | null>>
  5. >(() => {})
  6. export const MainScrollContainerProvider = ({ children }: { children: ReactNode }) => {
  7. const [container, setContainer] = useState<HTMLElement | null>(null)
  8. return (
  9. <MainScrollContainerContext.Provider value={container}>
  10. <SetMainScrollContainerContext.Provider value={setContainer}>
  11. {children}
  12. </SetMainScrollContainerContext.Provider>
  13. </MainScrollContainerContext.Provider>
  14. )
  15. }
  16. export const useSetMainScrollContainer = () => {
  17. const context = useContext(SetMainScrollContainerContext)
  18. return context
  19. }
  20. export const useMainScrollContainer = () => {
  21. const context = useContext(MainScrollContainerContext)
  22. return context
  23. }