solidjs-hooks
TypeScript icon, indicating that this package has built-in type declarations

1.1.2 • Public • Published

solidjs-hooks

A collection of useful SolidJS hooks.

Installation

# Using NPM
npm install solidjs-hooks
# Using Yarn
yarn add solidjs-hooks

Usage

useBoolean

SolidJS state hook that tracks the value of a boolean.

This is an alias of useToggle.

useCookie

SolidJS hook that returns the current value of a cookie, a callback to set the cookie's value, and a callback to remove the cookie.

Usage

import { createSignal } from 'solid-js';
import { useCookie } from 'solidjs-hooks';

const Demo = () => {
  const [cookie, setCookie, removeCookie] = useCookie('my-cookie');
  const [count, setCount] = createSignal(0);

  const setCookieHandler = () => {
    setCount((prevCount) => prevCount + 1);
    setCookie(`my-awesome-cookie-${cookie()}`);
  }

  return (
    <div>
      <p>Cookie value: {cookie()}</p>
      <button onClick={() => setCookieHandler()}>Update Cookie</button>
      <button onClick={() => removeCookie()}>Delete Cookie</button>
    </div>
  )
}

useCounter

SolidJS state hook that tracks a numeric value.

useNumber is an alias for useCounter.

Usage

import { useCounter } from 'solidjs-hooks';

const Demo = () => {
  const { count, increment, decrement, set, reset } = useCounter();

  return (
    <div>
      <p>Current count: {count()}</p>
      <button onClick={() => increment()}>Increment</button>
      <button onClick={() => increment(5)}>Increment (+5)</button>
      <button onClick={() => decrement()}>Decrement</button>
      <button onClick={() => decrement(5)}>Decrement (-5)</button>
      <button onClick={() => set(100)}>Set to 100</button>
      <button onClick={() => reset()}>Reset</button>
      <button onClick={() => reset(25)}>Reset to 25</button>
    </div>
  )
}

useEffect

A React-like functionality for the createEffect hook that SolidJS provides.

Usage

import { createSignal } from 'solid-js';
import { useEffect } from 'solidjs-hooks';

const Demo = () => {
  const [count, setCount] = createSignal(0);
  const [delay, setDelay] = createSignal(1000);

  useEffect(() => {
    const interval = setInterval(() => {
      setCount((prevCount) => prevCount + 1);
    }, delay());

    return () => clearInterval(interval);
  });

  return (
    <div>
      <p>Count is {count()}</p>
      <button onClick={() => setDelay((prevDelay) => prevDelay + 1000)}>
        Increase interval delay
      </button>
      <button onClick={() => setDelay((prevDelay) => prevDelay - 1000)}>
        Decrease interval delay
      </button>
    </div>
  )
}

useInterval

A declarative interval hook. The interval can be paused by setting the delay to null.

Usage

import { createSignal } from 'solid-js';
import { useInterval } from 'solidjs-hooks';

const Demo = () => {
  const DEFAULT_DELAY = 1000;
  const [count, setCount] = createSignal(0);
  const [delay, setDelay] = createSignal(DEFAULT_DELAY);

  useInterval(() => {
    setCount((prevCount) => prevCount + 1);
  }, delay);

  const toggleInterval = () => {
    setDelay((prevDelay) => prevDelay ? null : DEFAULT_DELAY);
  }

  return (
    <div>
      <p>Count: {count()}</p>
      <div>
        <button onClick={() => toggleInterval()}>
          Toggle Interval
        </button>
      </div>
    </div>
  )
}

useLocalStorage

SolidJS side-effect hook that manages a single localStorage key.

Usage

import { useLocalStorage } from 'solidjs-hooks';

const Demo = () => {
  const [value, setValue, remove] = useLocalStorage('my-key', 'foo');

  return (
    <div>
      <div>Value: {value()}</div>
      <button onClick={() => setValue('bar')}>bar</button>
      <button onClick={() => setValue('baz')}>baz</button>
      <button onClick={() => remove()}>Remove</button>
    </div>
  )
}

useNumber

SolidJS state hook that tracks a numeric value.

This is an alias of useCounter.

useSessionStorage

SolidJS side-effect hook that manages a single sessionStorage key.

Usage

import { useSessionStorage } from 'solidjs-hooks';

const Demo = () => {
  const [value, setValue, remove] = useSessionStorage('my-key', 'foo');

  return (
    <div>
      <div>Value: {value()}</div>
      <button onClick={() => setValue('bar')}>bar</button>
      <button onClick={() => setValue('baz')}>baz</button>
      <button onClick={() => remove()}>Remove</button>
    </div>
  )
}

useState

This is an alias of the built-in createSignal hook in SolidJS.

useTimeout

A declarative timeout hook. When the delay changes, it will rerun.

Usage

import { createSignal } from 'solid-js';
import { useTimeout } from 'solidjs-hooks';

const Demo = () => {
  const [count, setCount] = createSignal(0);
  const [delay, setDelay] = createSignal(1000);

  useTimeout(() => {
    setCount((prevCount) => prevCount + 1);
  }, delay);

  return (
    <div>
      <p>Count is {count()}</p>
      <button onClick={() => setDelay((prevDelay) => prevDelay + 1000)}>
        Increase timeout delay
      </button>
      <button onClick={() => setDelay((prevDelay) => prevDelay - 1000)}>
        Decrease timeout delay
      </button>
    </div>
  )
}

useTitle

SolidJS side-effect hook that sets the title of the page.

Usage

import { createSignal } from 'solid-js';
import { useTitle } from 'solidjs-hooks';

const Demo = () => {
  const [title, setTitle] = createSignal(document.title);

  // Also accepts a string instead of an Accessor.
  useTitle(title);

  return (
    <div>
      <p>Document title is: {title()}</p>
      <form>
        <label for="title">Change document title:</label>
        <input type="text" id="title" onChange={(e) => setTitle(e.currentTarget.value)}/>
      </form>
    </div>
  )
}

useToggle

SolidJS state hook that tracks the value of a boolean.

useBoolean is an alias for useToggle.

Usage

import { useToggle } from 'solidjs-hooks';

const Demo = () => {
  const [on, toggle] = useToggle();

  return (
    <div>
      <p>{on() ? "ON" : "OFF"}</p>
      <button onClick={() => toggle()}>Toggle</button>
      <button onClick={() => toggle(true)}>Turn On</button>
      <button onClick={() => toggle(false)}>Turn Off</button>
    </div>
  )
}

useWindowSize

SolidJS sensor hook that tracks dimensions of the browser window.

Usage

import { useWindowSize } from 'solidjs-hooks';

const Demo = () => {
  const { width, height } = useWindowSize();

  return (
    <div>
      <p>Window width: {width()}</p>
      <p>Window height: {height()}</p>
    </div>
  )
}

Readme

Keywords

Package Sidebar

Install

npm i solidjs-hooks

Weekly Downloads

189

Version

1.1.2

License

MIT

Unpacked Size

97.9 kB

Total Files

29

Last publish

Collaborators

  • codingwithnuke