Skip to content

Instantly share code, notes, and snippets.

@Gerhut
Created June 20, 2019 09:43
Show Gist options
  • Save Gerhut/dc927b928abf995e7cb8458656d4d125 to your computer and use it in GitHub Desktop.
Save Gerhut/dc927b928abf995e7cb8458656d4d125 to your computer and use it in GitHub Desktop.
React Hooks
import { createRef, useState, useEffect, useContext } from 'react'
export function useReducer(reducer, initialArg, init) {
const [stateRef] = useState(() => {
if (init === undefined) {
return createRef(initialArg)
} else {
return createRef(init(initialArg)))
}
})
const dispatch = useCallback((action) => {
stateRef.current = reducer(stateRef.current, action)
}, [stateRef, reducer])
return [stateRef.current, dispatch]
}
export function useCallback(fn, deps) {
return useMemo(() => fn, deps)
}
export function useMemo(create, deps) {
const [value, setValue] = useState(create)
useEffect(() => {
setValue(create())
}, deps)
return value
}
export function useRef(initialValue) {
const [ref] = useState(() => createRef(initialValue))
return ref
}
export function useImperativeHandle(ref, createHandler, deps) {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment