PluginProbe
Code Snippets / 3.10.0
Code Snippets v3.10.0
3.10.2 3.10.1 3.10.0 3.10.0-beta.2 3.10.0-beta.1 4.0.0-beta.1 3.9.6 trunk 2.10.0 2.10.1 2.12.0 2.12.1 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.14.1 2.14.2 2.14.3 2.14.4 2.14.5 2.14.6 3.0.0 3.0.1 All 64 releases
code-snippets / js / utils / hooks.ts

hooks.ts in Code Snippets 3.10.0, at js/utils/hooks.ts

22 lines 498 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { createContext, useContext } from 'react'
2 import type { Context } from 'react'
3
4 export const createContextHook = <T>(name: string): [
5 Context<T | undefined>,
6 () => T
7 ] => {
8 const contextValue = createContext<T | undefined>(undefined)
9
10 const useContextHook = (): T => {
11 const value = useContext(contextValue)
12
13 if (value === undefined) {
14 throw Error(`use${name} can only be used within a ${name} context provider.`)
15 }
16
17 return value
18 }
19
20 return [contextValue, useContextHook]
21 }
22