/atom

Simple atom structure inspired by clojure's atom. Mutations are JSON RFC 6902 patches.

Primary LanguageTypeScript

@gratico/atom

@gratico/atom

Simple atom structure inspired by clojure's atom. Mutations are JSON RFC 6902 patches.

Install and use

To use run npm install -g @gratico/atom

import {defAtom, commitPatch, defCursor, deref, defWatchableCursor} from "@gratico/atom"

const atom = defAtom({user: {profile: {name: "John"}}})

React.useLayoutEffect(() => {
  const cursor = defWatchableCursor(atom, ["user", "profile"]);
  cursor.addWatch(id, handler);
  return () => {
    cursor.removeWatch(id);
  };
}, []);
export * from "./atom";