Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

mitt-context.tsx 738B

123456789101112131415161718192021222324252627
  1. import { createContext, useContext, useContextSelector } from 'use-context-selector'
  2. import { useMitt } from '@/hooks/use-mitt'
  3. import { noop } from 'lodash-es'
  4. type ContextValueType = ReturnType<typeof useMitt>
  5. export const MittContext = createContext<ContextValueType>({
  6. emit: noop,
  7. useSubscribe: noop,
  8. })
  9. export const MittProvider = ({ children }: { children: React.ReactNode }) => {
  10. const mitt = useMitt()
  11. return (
  12. <MittContext.Provider value={mitt}>
  13. {children}
  14. </MittContext.Provider>
  15. )
  16. }
  17. export const useMittContext = () => {
  18. return useContext(MittContext)
  19. }
  20. export function useMittContextSelector<T>(selector: (value: ContextValueType) => T): T {
  21. return useContextSelector(MittContext, selector)
  22. }