Initial commit: WordPress wp-content (themes, plugins, languages)
- Theme: momentry (custom theme with REST API routes) - Plugins: code-snippets (contains all API proxies) - Languages: zh_TW translations - Excludes: cache, backups, uploads, logs
This commit is contained in:
21
plugins/code-snippets/js/utils/hooks.ts
Normal file
21
plugins/code-snippets/js/utils/hooks.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { createContext, useContext } from 'react'
|
||||
import type { Context } from 'react'
|
||||
|
||||
export const createContextHook = <T>(name: string): [
|
||||
Context<T | undefined>,
|
||||
() => T
|
||||
] => {
|
||||
const contextValue = createContext<T | undefined>(undefined)
|
||||
|
||||
const useContextHook = (): T => {
|
||||
const value = useContext(contextValue)
|
||||
|
||||
if (value === undefined) {
|
||||
throw Error(`use${name} can only be used within a ${name} context provider.`)
|
||||
}
|
||||
|
||||
return value
|
||||
}
|
||||
|
||||
return [contextValue, useContextHook]
|
||||
}
|
||||
Reference in New Issue
Block a user