1.0.1 • Published 1 year ago

@saasquatch/universal-hooks v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Universal Hooks

This library aims to provide a common interface for React-like hooks to plug into. Simply plug in an implementation and your hooks are reusable across different implementations.

Usage

There are two ways to plug in an implementation. You can supply a module at runtime or you can replace Universal Hooks at compile time.

Provide an implementation at runtime

// Set an implementation for the hooks
setImplementation(haunted)
// OR
setImplementation(React)
// OR
setImplementation(Preact)

// Use the hooks like normal
function useCounter() {
    const [counter, setCounter] = useState(0);

    const increment = () => setCounter((c) => c + 1)
    const decrement = () => setCounter((c) => c - 1)

    return {counter, increment, decrement}
}

Provide an implementation via bundlers

Rollup, Webpack and other bundlers allow compile-time replacement of implementations.

E.g. with the Rollup alias plugin https://github.com/rollup/plugins/tree/master/packages/alias

To swap in React

entries: [
  { find: '@saasquatch/universal-hooks', replacement: 'React' },
];

To swap in Haunted

entries: [
  { find: '@saasquatch/universal-hooks', replacement: 'haunted' },
];

API

Most common hooks are supported, except for useContext.

  • useState
  • useMemo
  • useCallback
  • useEffect
  • useReducer
  • useRef