Usage in React

Usage in React

Installation

npm install @selkt/react use-sync-external-store

Usage

@selkt/react contains one hook, useSelectable which takes any SelectableInterface, a selector and an optional equality function and returns the selected slice of the state.

import { MutableSelectable } from '@selkt/core'
import { useSelectable } from '@selkt/react'
 
const store = new MutableSelectable({
  counter: 0,
})
 
const App = () => {
  const counter = useSelectable(
    store,
    state => state.counter,
    // strictEqual
  )
 
  const increment = () => {
    store.set(state => {
      state.counter++
    })
  }
 
  return (
    <div>
      {counter}
      <button type="button" onClick={increment}>Increment</button>
    </div>
}

API

useSelectable<StateType, SliceType>(
  selectable: SelectableInterface<StateType>,
  selector: (state: StateType) => SliceType,
  equalityFn?: (state: SliceType, prevState: SliceType) => boolean
): SliceType