Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@caasi/hooks

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@caasi/hooks

Some useful React Hooks

  • 1.7.5
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

NPM Status Build Status

@caasi/hooks

Some heretical React Hooks.

Install

npm install @caasi/hooks

Core hooks

useConcat

Yields one value or another.

const x = useConcat(0, 1); // yields 0 and 1

useArray

Yields every values from a given array.

const xs = useMemo(() => [0, 1, 2], []);
const x = useArray(xs); // yields 0, 1 and 2

useGenerator

Treats a generator as a stream and collects values from it.

function* gen() {
  yield 0;
  return 1;
}

const iter = useMemo(() => gen(), []);
const [value, done] = useGenerator(iter);

useDefined

Filters out undefined values.

function* gen() {
  yield 0;
  yield undefined;
  return 1;
}

const iter = useMemo(() => gen(), []);
const [value, done] = useGenerator(iter);
const x = useDefined(value); // yields 0 and 1

useFold

Folds over a hook value.

function* gen() {
  yield 1;
  yield 2;
  return 3;
}

const iter = useMemo(() => gen(), []);
const [value, done] = useGenerator(iter);
const x = useFold(value, (a, b) => a + b, 0); // yields 0, 1, 3 and 6

useFilter

Filters out unwanted values.

const mod2 = useCallback(x => x % 2 === 0);
const as = useMemo(() => [0, 1, 2], []);
const x = useArray(as);
const y = useFilter(x, mod2); // yields 0 and 2

usePromise

Resolves a Promise and returns its status.

const p = useMemo(() => api.get('https://example.com'), []);
const [value, error, isPending] = usePromise(p);

useMaybe/useOptional

Chains optional values into another optional value.

const ab = useMaybe(
  [a, b],
  (a, b) => a * a + b * b,
);

IO hooks

useTime

Gives a DOMHighResTimeStamp diff from the time it was called first time.

const t = useTime();

useRange

Gives a number between start and end. It's an application of useTime and it's useful in simple animations.

const theta = useRange(0, 2 * Math.PI);
const x = Math.cos(theta);
const y = Math.sin(theta);
const pt = { x, y };

useImageData

Reads an image from a URL and gives you an ImageData.

const imageData = useImageData('https://example.com/lena.png');

useBlob/useFile

Reads a Blob as an ArrayBuffer or a string. Defaults to an ArrayBuffer.

enum ResultType {
  ARRAY_BUFFER = 'arraybuffer',
  BINARY_STRING = 'binarystring',
  DATA_URL = 'dataurl',
  TEXT = 'text',
}

const dataurl = useBlob(file, useBlob.ResultType.DATA_URL);

useObjectURL

Creates an object URL from anything. It's useful with an image blob.

const imageData = useImageData(useObjectURL(file));

useImageFile

Gives a ImageData from an image blob. It's an alias of file => useImageData(useObjectURL(file)).

useWebSocket

Opens a web socket and streams messages.

const [socket, messages = []] = useWebSocket('wss://echo.websocket.org');
const msgs = messages.filter(x => x).reverse();

useProp

Binds a state and a state handler to a React element.

const [val, elem] = useProp(element, value, 'value', 'onChange', e => e.target.value);

useInput

A shortcut to bind a value to an input element.

const [r, rRange] = useInput(
  <input type="range" min="0.0" max="1.0" step="0.01" />,
  '1.0',
)

Other hooks

useSpace

Stores state histories.

It's named as useSpace instead of useHistory because it flattens a value in time to space(a list).

const [state, setState] = useState(0);
const history = useSpace(state);

useEffect(() => {
  setState(s => s + 1);
  console.log(history);
}, [history]);

ToDo

  • test custom hooks with cypress
  • add useDefined to keep the previous defined value
  • remove .github
  • implement useFold
    • implement useFilter
  • stop using undefined as a reset signal in useSpace
  • test more hooks
    • useConcat
    • useImageData
    • useImageFile
    • useProp
    • useInput
    • useObjectURL
    • useTime
    • useRange
    • useWebSocket
  • rewrite everything in TypeScript

Keywords

FAQs

Package last updated on 07 Dec 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc