All Projects → Andarist → React Selector Hooks

Andarist / React Selector Hooks

Collection of hook-based memoized selector factories for declarations outside of render.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to React Selector Hooks

entangle
Global state management tool for react hooks inspired by RecoilJS and Jotai using proxies.
Stars: ✭ 26 (-69.05%)
Mutual labels:  hooks, hook
hookr
PHP action and filter hook system
Stars: ✭ 39 (-53.57%)
Mutual labels:  hooks, hook
useAudioPlayer
Custom React hook & context for controlling browser audio
Stars: ✭ 176 (+109.52%)
Mutual labels:  hooks, hook
use-scroll-direction
A simple, performant, and cross-browser hook for detecting scroll direction in your next react app.
Stars: ✭ 24 (-71.43%)
Mutual labels:  hooks, hook
Swr
React Hooks for data fetching
Stars: ✭ 20,348 (+24123.81%)
Mutual labels:  hook, hooks
react-use-observer
Performant react hooks for WebApi Observers, useResizeObserver, useInteractionObserver, useMutationObserver
Stars: ✭ 19 (-77.38%)
Mutual labels:  hooks, hook
use-bus
React hook to subscribe and dispatch events accros React components
Stars: ✭ 51 (-39.29%)
Mutual labels:  hooks, hook
crypto-watchdog
Crypto Watchdog is an open-source developer friendly project, periodically queries crypto market and notifies potential pumps & recently added tokens/coins via web-hooks.
Stars: ✭ 22 (-73.81%)
Mutual labels:  hooks, hook
Ysf
YSF Server Functions
Stars: ✭ 77 (-8.33%)
Mutual labels:  hooks, hook
Radioactive State
☢ Make Your React App Truly Reactive!
Stars: ✭ 273 (+225%)
Mutual labels:  hooks, hook
react-use-hoverintent
React hook for hoverIntent
Stars: ✭ 16 (-80.95%)
Mutual labels:  hooks, hook
Webhook
webhook is a lightweight incoming webhook server to run shell commands
Stars: ✭ 7,201 (+8472.62%)
Mutual labels:  hooks, hook
use-double-tap
React hook for handling double tap on mobile devices
Stars: ✭ 18 (-78.57%)
Mutual labels:  hooks, hook
transition-hook
☄️ An extremely light-weight react transition animation hook which is simpler and easier to use than react-transition-group
Stars: ✭ 250 (+197.62%)
Mutual labels:  hooks, hook
use-smooth-scroll
React hook which gives a smooth scrolling function.
Stars: ✭ 41 (-51.19%)
Mutual labels:  hooks, hook
rusty-hook
git hook manager, geared toward Rust projects
Stars: ✭ 93 (+10.71%)
Mutual labels:  hooks, hook
Fre
👻 Tiny Footprint Concurrent UI library for Fiber.
Stars: ✭ 3,195 (+3703.57%)
Mutual labels:  hooks, hook
react-ui-hooks
🧩Simple repository of React hooks for building UI components
Stars: ✭ 20 (-76.19%)
Mutual labels:  hooks, hook
MouseInjectDetection
Simple method of checking whether or not mouse movement or buttons (<windows 10) are injected
Stars: ✭ 29 (-65.48%)
Mutual labels:  hooks, hook
Use Onclickoutside
React hook for listening for clicks outside of an element.
Stars: ✭ 361 (+329.76%)
Mutual labels:  hooks, hook

react-selector-hooks

Collection of hook-based memoized selector factories for declarations outside of render.

Motivation

Reusing existing functions. It also might often be desirable to declare selector functions outside of render to keep render functions less bloated.

Instead of this:

function Component({ a, b }) {
  const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b])
  return <span>{memoizedValue}</span>
}

You can write this:

const useSelector = createSelector(computeExpensiveValue)

function Component({ a, b }) {
  const memoizedValue = useSelector(a, b)
  return <span>{memoizedValue}</span>
}

API

createSelector(resultFunc)

import * as React from 'react'
import { createSelector } from 'react-selector-hooks'

const useSelector = createSelector(computeExpensiveValue)

export default function Component({ a, b }) {
  const memoizedValue = useSelector(a, b)
  return <span>{memoizedValue}</span>
}

createStateSelector([inputSelectors], resultFunc)

This is really similar to reselect's createSelector.

import * as React from 'react'
import { createStateSelector } from 'react-selector-hooks'

const useSelector = createStateSelector(
  [
    state => state.values.value1,
    (state, a) => state.values.value2 + a,
    (state, a) => state.values.value3 * a,
  ],
  (value1, value2, value3) => value1 + value2,
)

export default function Component({ a }) {
  const state = React.useContext(StoreContext)
  const memoizedValue = useSelector(state, a)
  return <span>{memoizedValue}</span>
}

createStructuredSelector({...inputSelectors}, resultFunc)

This is really similar to reselect's createStructuredSelector.

import * as React from 'react'
import { createStructuredSelector } from 'react-selector-hooks'

const useSelector = createStructuredSelector(
  {
    value1: state => state.values.value1,
    value2: (state, a) => state.values.value2 + a,
  },
  ({ value1, value2 }) => value1 + value2,
)

export default function Component({ a }) {
  const state = React.useContext(StoreContext)
  const memoizedValue = useSelector(state, a)
  return <span>{memoizedValue}</span>
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].