store-x-selector
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

store-x-selector

Minimalist fine-grained reactivity in React, with a selector-based store.

Explainer post: Reactivity is easy

Install

pnpm install store-x-selector

Usage

import {
  useSelector,
  createSelector,
  createSelectorMemoized,
  Store,
} from 'store-x-selector';

const selectors = {
  isFocus: createSelector((state, index) => state.focus === index),
};

const Context = createContext();
export function Grid() {
  const [store] = useState(() => new Store({ focus: 0 }));

  return (
    <Context.Provider value={store}>
      {Array.from({ length: 50 }).map((_, i) => (
        <Cell index={i} />
      ))}
    </Context.Provider>
  );
}

function Cell({ index }) {
  const store = useContext(Context);
  const focus = useSelector(store, selectors.isFocus, index);

  return (
    <button
      ref={ref}
      onClick={() => store.set('focus', index)}
      className={clsx({ focus })}
    >
      {index}
    </button>
  );
}

Package Sidebar

Install

npm i store-x-selector

Weekly Downloads

26

Version

1.0.2

License

MIT

Unpacked Size

19.3 kB

Total Files

18

Last publish

Collaborators

  • romgrk