react-ob
TypeScript icon, indicating that this package has built-in type declarations

3.0.2 • Public • Published

react-ob

Only use observer do react state, only 0.4kb in gzip.

start

  1. Add ObProvider in App.tsx
<ObProvider>
  <App />
</ObProvider>
  1. Use useChannel and Ob in Page
function Page() {
  const value = useChannel(0);

  return (
    <div>
      <Ob channels={[value]}>{(value) => <div>num: {value}</div>}</Ob>
      <button onClick={() => value.set(value() + 1)}></button>
    </div>
  );
}
  1. Use global channel:
const name = channel("");

function UserPage() {
  return (
    <Subscribe channels={[name]}>
      {(_name) => <div>User name: {_name}</div>}
    </Subscribe>
  );
}

function UserSettingPage() {
  return (
    <div>
      <div> setting username:</div>
      <input onChange={(e) => name.set(e.target.value)} />
    </div>
  );
}
  1. Use localStorage channel:
const name = channelWithStorage("user-name", "");

function UserPage() {
  return (
    <Subscribe channels={[name]}>
      {(_name) => <div>User name: {_name}</div>}
    </Subscribe>
  );
}

function UserSettingPage() {
  return (
    <div>
      <div> setting username:</div>
      <input onChange={(e) => name.set(e.target.value)} />
    </div>
  );
}

/react-ob/

    Package Sidebar

    Install

    npm i react-ob

    Weekly Downloads

    53

    Version

    3.0.2

    License

    none

    Unpacked Size

    15.5 kB

    Total Files

    11

    Last publish

    Collaborators

    • ymblender